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

标签 sas

我使用的是 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/

相关文章:

sql - 使用PROC SQL查找与SAS中给定字符串最多一个字母不同的字符串

datetime - SAS 日期时间格式为 POSIX

sas - 在未安装 SAS 的情况下打开 SAS .egp 文件以查看代码

sas - 基于 SAS 中的另一个数据集对值进行排名

sas - SAS 中的日期错误

sql-server - 从文件运行 SQL 语句以在 SAS 中创建数据

mysql - 如何使用 SAS 删除特定时间间隔内的第一行或第一组行?

java - 无法使用Jboss登录

c - 使用 SAS proc proto 将字符串传递给 C 函数

SAS 字段函数出现问题