问题陈述:我有一个文本文件,我想用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
提前致谢。
答案 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;