輸入方法用于讀取原始數(shù)據(jù)。 原始數(shù)據(jù)可以來(lái)自外部源或來(lái)自流數(shù)據(jù)。 輸入語(yǔ)句創(chuàng)建一個(gè)變量,其名稱將分配給每個(gè)字段。 所以你必須在輸入語(yǔ)句中創(chuàng)建一個(gè)變量。 相同的變量將顯示在 SAS 數(shù)據(jù)集的輸出中。 以下是 SAS 中可用的不同輸入方法。
每個(gè)輸入方法的細(xì)節(jié)描述如下。
在此方法中,變量與數(shù)據(jù)類型一起列出。 仔細(xì)分析原始數(shù)據(jù),以便聲明的變量的順序與數(shù)據(jù)匹配。 分隔符(通常為空格)在任何一對(duì)相鄰列之間應(yīng)該是一致的。 任何丟失的數(shù)據(jù)將導(dǎo)致輸出中的問(wèn)題,因?yàn)榻Y(jié)果將是錯(cuò)誤的。
下面的代碼和輸出顯示了使用列表輸入法。
DATA TEMP; INPUT EMPID ENAME $ DEPT $ ; DATALINES; 1 Rick IT 2 Dan OPS 3 Tusar IT 4 Pranab OPS 5 Rasmi FIN ; PROC PRINT DATA=TEMP; RUN;
在運(yùn)行 bove 代碼,我們得到以下輸出。
在此方法中,變量與數(shù)據(jù)類型一起列出。 原始數(shù)據(jù)被修改為在匹配數(shù)據(jù)前面聲明變量名。 分隔符(通常為空格)在任何一對(duì)相鄰列之間應(yīng)該是一致的。
下面的代碼和輸出顯示使用命名輸入法。
DATA TEMP; INPUT EMPID= ENAME= $ DEPT= $ ; DATALINES; EMPID=1 ENAME= Rick DEPT= IT EMPID=2 ENAME= Dan DEPT= OPS EMPID=3 ENAME= Tusar DEPT= IT EMPID=4 ENAME= Pranab DEPT= OPS EMPID=5 ENAME= Rasmi DEPT= FIN ; PROC PRINT DATA=TEMP; RUN;
在運(yùn)行 bove 代碼,我們得到以下輸出。
在此方法中,變量列出的數(shù)據(jù)類型和列寬度指定單列數(shù)據(jù)的值。 例如,如果員工姓名包含最多 9 個(gè)字符,每個(gè)員工姓名從第 10 列開始,則員工姓名變量的列寬度將為 10-19。
下面的代碼演示如何使用列輸入法。
DATA TEMP; INPUT EMPID 1-3 ENAME $ 4-12 DEPT $ 13-16; DATALINES; 14 Rick IT 241Dan OPS 30 Sanvi IT 410Chanchal OPS 52 Piyu FIN ; PROC PRINT DATA=TEMP; RUN;
當(dāng)我們執(zhí)行上面的代碼,它會(huì)產(chǎn)生以下結(jié)果:
在該方法中,從固定的起始點(diǎn)讀取變量,直到遇到空格。 由于每個(gè)變量都有固定的起始點(diǎn),任何一對(duì)變量之間的列數(shù)將成為第一個(gè)變量的寬度。 字符“@n”用于指定變量的起始列位置為第 n 列。
下面的代碼顯示了使用格式化輸入法
DATA TEMP; INPUT @1 EMPID $ @4 ENAME $ @13 DEPT $ ; DATALINES; 14 Rick IT 241 Dan OPS 30 Sanvi IT 410 Chanchal OPS 52 Piyu FIN ; PROC PRINT DATA=TEMP; RUN;
當(dāng)我們執(zhí)行上面的代碼,它會(huì)產(chǎn)生以下結(jié)果:
更多建議: