0

考虑以下具有 2 个变量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;
4

1 回答 1

2

您(大概)看到的是 的效果FLOWOVER,这是从文件或数据线输入的默认 SAS 修饰符(infile语句或filename语句上的一个选项)。

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

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

这些是FLOWOVERMISSOVERTRUNCOVERSTOPOVER选项。 FLOWOVER是默认设置,主要是因为回溯时,由于行长度限制(使用打孔卡时卡列返回 80 列),通常在多行上有数据,并且 SAS 讨厌破坏兼容性。

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

于 2013-10-28T16:12:34.780 回答