我正在使用Sas studio大学版。我有一个没有任何列标题的dat文件(4列)。我试图用
读取它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版本时,它可以正常工作。
由于
答案 0 :(得分:3)
大多数情况下,如果SAS只读取一行,然后就像它有很多行时一样,那就是行终止符(即行尾字符)的问题)。
Windows使用CR + LF(0D0A
),而Unix / Linux使用0A
(LF),包括Mac OS X.
这意味着如果你在Windows机器上并且有一个Unix终止文件,它将被读入,就像它只有一行一样。反过来通常不是问题 - 你得到一个额外的角色,可能会有点乱,但它仍然表现为正确的行数。
您可以通过指定termstr=
选项在datastep中更改此选项以指定正确的行终止符。例如:
data van;
infile "/folders/myfolders/test2/psek-win.dat" termstr=lf;
input a $ b $ c $ d $;
run;
将指示SAS考虑使用简单的换行符作为行终止符。
答案 1 :(得分:0)
我意识到我使用的文件是用于Windows的。当我使用相同文件的Linux版本时,它工作正常。谢谢你的帮助