我是SAS的新手,因为我的作业需要阅读这个文件: http://www.math.tau.ac.il/~liadshek/Books.txt
我正在尝试以下方法:
DATA books_data;
INFILE books firstobs=2;
INPUT year numberBooks words copies annual author;
RUN;
但是作者字段未正确读取,产生以下错误:
NOTE: Invalid data for author in line 2 28-32.
RULE: ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0
2 2008 1 82835 668118 199514 "X.C" 32
year=2008 numberBooks=1 words=82835 copies=668118 annual=199514 author=. _ERROR_=1 _N_=1
我尝试将DSD添加到我的命令中,如以下链接所示:
http://www.ats.ucla.edu/stat/sas/faq/readdsd2.htm http://www.ats.ucla.edu/stat/sas/faq/InfileOptions_ut.htm
但这似乎没有帮助(当我这样做时,所有字段都没有正确读取......)。 我做错了什么?
感谢并抱歉这个愚蠢的问题。
编辑 - 我的解决方案:
FILENAME books URL "http://www.math.tau.ac.il/~liadshek/Books.txt" ;
DATA books_data;
INFILE books firstobs=2 dlm=" " DSD;
INPUT year numberBooks words copies annual author $;
RUN;
答案 0 :(得分:4)
如果你没有完全回答这个问题,既然你说这是家庭作业,你需要找到一种方法来告诉SAS'作者'是一个字符变量。如果你不另外告诉它,它将假定所有变量都应该是数字,并相应地抛出错误。
答案 1 :(得分:1)
为分隔文件编写input
语句的一个好方法是首先编写proc import
:
proc import file="blah.txt" out=want dbms=dlm dlm=' ' replace dsd;
run;
这将在日志中生成具有许多常用选项集的输入代码。我不建议在生产代码中使用proc import
,但它作为一种学习工具非常有用。