我使用的是 Sas studio 大学版。我有一个没有任何列标题(4 列)的 dat 文件。我正在尝试用
data van;
infile "/folders/myfolders/test2/psek-win.dat";
input a $ b $ c $ d $;
run;
即为列创建我自己的名称。它有效,但只读入第一行。如何让它读取所有行?我一直在观看 youtube 教程,但我被卡住了。
编辑:这是输出
1 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
57
58 data van;
59 infile "/folders/myfolders/test2/psek-win.dat";
60 input a $ b $ c $ d $;
61 run;
NOTE: The infile "/folders/myfolders/test2/psek-win.dat" is:
Filename=/folders/myfolders/test2/psek-win.dat,
Owner Name=sasdemo,Group Name=sas,
Access Permission=-rw-rw-r--,
Last Modified=05Jun2015:06:55:44,
File Size (bytes)=1527
NOTE: 1 record was read from the infile "/folders/myfolders/test2/psek-win.dat".
The minimum record length was 1527.
The maximum record length was 1527.
NOTE: The data set WORK.VAN has 1 observations and 4 variables.
NOTE: DATA statement used (Total process time):
real time 0.01 seconds
cpu time 0.01 seconds
62
63 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
75
编辑 2: 我真的应该从一开始就包含这些信息……抱歉: 我正在使用 Windows 7,在 Linux Redhat 64 上通过 VirtualBox 运行 Sas Studio。我意识到我使用的文件适用于 Windows。当我使用同一文件的 Linux 版本时,它工作正常。
谢谢
最佳答案
大多数时候,如果 SAS 只读取一行,然后当它有很多行时就好像它已经完成了,这是行终止符(即行尾字符)的问题).
Windows 使用 CR+LF (0D0A
) 而 Unix/Linux 使用 0A
(LF),包括 Mac OS X。
这意味着如果您在 Windows 机器上并且有一个 Unix 终止文件,它将被读入,就好像它只有一行一样。反过来通常不是问题 - 您会得到一个额外的字符,这可能会造成一些困惑,但它仍然表现得好像它是正确的行数。
您可以通过指定 termstr=
在数据步骤中更改它选项来指定正确的行终止符。例如:
data van;
infile "/folders/myfolders/test2/psek-win.dat" termstr=lf;
input a $ b $ c $ d $;
run;
将指示 SAS 将简单的换行符视为行终止符。
关于没有列标题的 Sas .dat 文件仅在 sas studio 中读取第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30668139/