SAS读取csv文件

时间:2014-06-02 23:20:28

标签: sas

我有一个.csv数据文件,如下所示:

encore,alcore,4072,4072,,L,L,PhonErr
leopard,alligator,14877,14877,0.36,L,H,SemErr
apple,apple,1973,1973,1,L,H,Correct
salary,appliance,7168,7168,0,H,L,Unknown,
diffusion,appreciation,7272,7272,0.04,L,L,PhonErr
umbrella,arrow,6420,6420,0.16,L,H,Unknown
college,attendance,3885,3885,0.56,H,H,SemErr
body,bank,1890,1890,0.02,H,H,Unknown

我尝试使用以下代码将其读入SAS数据集:

DATA test;
infile "PATH.test.csv" dsd delimiter=',';
input target $ response $ rt1 rt2 lsa freq $ imig $ resp_type $;
run;
PROC PRINT data=test;run;

但是,当我这样做时,打印数据集只包含我的csv文件的第一行和最后一行。也就是说,它只显示以" encore"开头的行。和"银行"。这两行格式正确,但其他行都没有进入数据集。日志中没有错误。日志说,

NOTE: 2 records were read from the infile "PATH\test.csv".
The minimum record length was 37.
The maximum record length was 256.

任何人都知道发生了什么事?我不明白为什么这段代码不能正确阅读。这基本上与我在csv文件中读取时使用的代码完全相同,并且它从未做过这样的事情。事实上,在其他csv文件上使用类似的代码工作得很好。但是出于某种原因,它拒绝读入此文件。

1 个答案:

答案 0 :(得分:3)

最大记录长度为256. 注意表明行尾字符有问题。如果您在Windows上运行并且您的文件是在unix / linux或mac上创建的,则需要将termstr =选项添加到您的infile语句中。 LF用于Unix,CR用于MAC OS。

DATA test;
 infile "test.csv" dsd delimiter=',' termstr=lf;
 input target $ response $ rt1 rt2 lsa freq $ imig $ resp_type $;
run;    

请参阅SAS支持网站上有关此主题的Usage Note 14178: INFILE's TERMSTR= option facilitates reading files between UNIX and Windows