没有列标题的Sas .dat文件只在sas studio中读取第1行

时间:2015-06-05 13:44:25

标签: sas

我正在使用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版本时,它可以正常工作。

由于

2 个答案:

答案 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版本时,它工作正常。谢谢你的帮助