SAS中的数据输入

时间:2013-10-28 15:00:04

标签: sas

考虑使用2个变量ab的跟随测试数据集:

data test;
infile 'C:\Users\Public\test.dat';
input a b;
run;

proc print data=test;
run;

当我运行此代码时,我得到了所需的数据集。但是,当我添加更多变量时,我会得到更多数字。这些数字来自哪里?

data test;
infile 'C:\Users\Public\test.dat';
input a b c d;
run;

proc print data=test;
run;

1 个答案:

答案 0 :(得分:2)

您(可能)看到的是FLOWOVER的效果,默认SAS修饰符从文件或数据输入(infile语句中的选项或filename输入语句)。

当SAS到达一行的末尾,即读取EOL字符,但需要进一步输入时,它可以做一些事情。

  • 可以转到下一行获取更多输入
  • 它可以停止读入并将当前变量设置为缺失,以及所有其他变量
  • 它可以停止读入并保留当前变量的可用输入,并设置缺少所有其他变量
  • 它可以停止读入,抛出错误,并将控制权交还给用户。

这些是FLOWOVERMISSOVERTRUNCOVERSTOPOVER选项。 FLOWOVER是默认值,很大程度上是因为回程时,由于线路长度有限(在使用穿孔卡时卡片列为80列),因此通常会在多行上显示数据,并且SAS讨厌打破兼容性。

那么你可能在第一组和第二组代码之间看到的是,在第一组中,你看到(比方说)100行×2列。在第二个中,您会看到50行x 4列,第一个文件中的偶数列是新文件中的第3和第4列。