从输入文件SAS读取字符串

时间:2014-02-21 16:29:49

标签: sas

我是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;

2 个答案:

答案 0 :(得分:4)

如果你没有完全回答这个问题,既然你说这是家庭作业,你需要找到一种方法来告诉SAS'作者'是一个字符变量。如果你不另外告诉它,它将假定所有变量都应该是数字,并相应地抛出错误。

答案 1 :(得分:1)

为分隔文件编写input语句的一个好方法是首先编写proc import

proc import file="blah.txt" out=want dbms=dlm dlm=' ' replace dsd;
run;

这将在日志中生成具有许多常用选项集的输入代码。我不建议在生产代码中使用proc import,但它作为一种学习工具非常有用。