2.3.4INFILE语句
作用是在数据步中指出用INPUT语句读取的外部数据文件。
1. 语法
INFILE file-specification <options > <operating-environment-options>;
INFILE DBMS-specifications;
1)语句参数:
(1)file-specification 确定输入数据的记录源,这是一个外部文件或流内的数据。文件规格可以是这些形式:
① 外部文件指定外部文件的物理名称,即操作环境访问文件使用的名称。
②FileRef指定一个外部文件的文件逻辑名。
必须用FILENAME语句将文件逻辑名与外部文件的文件名联系起来。
要求:你必须与文件名的外部文件中语句的FileRef,文件名的功能,或适当的操作环境的命令。
③ Datalines | datalines4
指定输入数据步中紧跟在datalines或datalines4后面的数据。这允许你使用infile语句选项来控制用INPUT语句读取的数据行。
2)可选项
(1)COLUMN=变量 (别名:col =)
SAS将输入指针定位在当前列的位置。COLUMN=变量不写入数据集。
(2)DELIMITER=分隔符分隔符(别名:DLM =)
指定一个定界符(而非空格)被用于LIST列表输入,分隔符可以是“分隔符的列表”
字符变量 指定一个字符变量的值作为分隔符。默认值为空格。
例如,下面的程序使用列表读取以逗号分隔的数据。第二行数据包含缺失值。由于SAS允许连续的分隔符和列表输入,输入的语句不能检测到缺失值。
*ex2-3-14;
data scores;
infile datalines delimiter=',';
input test1 test2 test3;
datalines;
91,87,95
97,,92
,1,1
;
PROC PRINT;
run;
运行结果如图2-21 所示。
图2-21 没有检测到缺失值
为正确读取数据,在INFILE语句中增加DSD选项。
(3)DSD(分隔符的敏感数据)
指定当数据值用引号括起来,值被视为字符数据时的定界符。当你使用LIST输入和设置一个逗号作为默认的分隔符时,DSD选项改变了SAS如何处理分隔符。默认情况下,INPUT语句将连续的分隔符作为一个单位处理。当使用DSD输入语句,将连续的分隔符之间缺少的值被读为缺失值。