在sas中错误地读取文本文件

时间:2017-10-18 06:13:44

标签: sas

问题陈述:我有一个文本文件,我想用SAS INFILE函数读取它。但SAS没有给我正确的输出。

Text File:
Akash    18 19 20
Tejas       20 16
Shashank 16 20
Meera    18    20

我尝试过的守则:

DATA Arr;
INFILE "/folders/myfolders/personal/SAS_Array .txt" missover;
INPUT Name$ SAS DS R;
RUN;

PROC PRINT DATA=arr;
RUN;

虽然我得到的结果是:

Table of Contents
Obs Name    SAS DS  R
1   Akash   18  19  20
2   Tejas   20  16  .
3   Shashank16  20  .
4   Meera   18  20  .

哪个不合适。那么代码有什么问题呢?我需要使用与文本文件中相同的标记序列来读取SAS中的文件。请帮忙。

预期结果:

Table of Contents
Obs Name    SAS DS  R
1   Akash   18  19  20
2   Tejas    .  20  16  
3   Shashank16  20  .
4   Meera   18   .  20  

提前致谢。

1 个答案:

答案 0 :(得分:1)

如果该文本文件以制表符分隔,则应在infile语句中指定分隔符,并使用dsd选项来说明缺失值:

DATA Arr;
INFILE "/folders/myfolders/personal/SAS_Array .txt" missover dlm='09'x dsd;
INPUT Name $ SAS DS R;
RUN;

PROC PRINT DATA=arr;
RUN;

编辑:编辑后,您的示例文本文件现在看起来是固定宽度而不是空格分隔。在这种情况下,您应该使用列输入:

DATA Arr;
INFILE "/folders/myfolders/personal/SAS_Array .txt" missover;
INPUT Name $1-9 SAS 10-12 DS 13-15 R 16-18;
RUN;

数据表示例:

DATA Arr;
INFILE datalines missover;
INPUT Name $1-9 SAS 10-12 DS 13-15 R 16-18;
datalines;
Akash    18 19 20
Tejas       20 16
Shashank 16 20
Meera    18    20
RUN;