2.3.4INFILE语句

作用是在数据步中指出用INPUT语句读取的外部数据文件。

1. 语法

INFILE file-specification <options > <operating-environment-options>; 

INFILE DBMS-specifications; 

1)语句参数:

1file-specification 确定输入数据的记录源这是一个外部文件或流内的数据。文件规格可以是这些形式

① 外部文件指定外部文件的物理名称即操作环境访问文件使用的名称。

FileRef指定一个外部文件的文件逻辑名。

必须用FILENAME语句将文件逻辑名与外部文件的文件名联系起来。

要求:你必须与文件名的外部文件中语句的FileRef,文件名的功能,或适当的操作环境的命令。

 Datalines | datalines4

指定输入数据步中紧跟在datalinesdatalines4后面的数据。这允许你使用infile语句选项来控制用INPUT语句读取的数据行。

 

2可选项

(1)COLUMN=变量 (别名:col =

SAS将输入指针定位在当前列的位置。COLUMN=变量不写入数据集。

2DELIMITER=分隔符分隔符(别名: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 所示。

spacer.gif

2-21 没有检测到缺失值

为正确读取数据,在INFILE语句中增加DSD选项。

3DSD(分隔符的敏感数据)

指定当数据值用引号括起来,值被视为字符数据时的定界符。当你使用LIST输入和设置一个逗号作为默认的分隔符时,DSD选项改变了SAS如何处理分隔符。默认情况下,INPUT语句将连续的分隔符作为一个单位处理。当使用DSD输入语句,将连续的分隔符之间缺少的值被读为缺失值。