SAS中的数据输入

SAS中的数据输入,sas,Sas,考虑以下带有两个变量的测试数据集a和b: 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=te

考虑以下带有两个变量的测试数据集
a
b

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;
您(大概)看到的是
FLOWOVER
的效果,它是从文件或数据线输入的默认SAS修饰符(
infle
语句或
filename
语句上的一个选项)

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

  • 它可以转到下一行以获取更多输入
  • 它可以停止读入并将当前变量和所有其他变量设置为缺失
  • 它可以停止读入并保留当前变量的可用输入,并设置缺少的所有其他变量
  • 它可以停止读入,抛出错误,并将控制权返回给用户
这些是
飞越
飞越失误
特朗科飞越
,以及
中途停留
选项
FLOWOVER
是默认设置,这主要是因为在很久以前,由于行长度的限制(打孔卡使用时卡列为80列),所以在多行上有数据是很常见的,SAS讨厌破坏兼容性

因此,您可能会在第一组和第二组代码之间看到,在第一组代码中,您会看到(比如)100行x2列。在第二个文件中,您可以看到50行x 4列,第一个文件中的偶数列是新文件中的第3列和第4列。

您可以发布(1)test.dat,(2)执行第一个代码块后的结果(只有a和b)和(3)执行第二个代码块后的结果(有b和d)的摘录吗?当你试图提供帮助时,了解你正在使用的数据和你正在接收的输出非常有帮助。