在SAS中,我有两行评论。 它是一个逗号分隔的数据集。 我的代码如下:
DATA SASweek1.industry;
INFILE "&Dirdata.Assignment1_Q6_data.txt" DLM="," DSD termstr=crlf TRUNCOVER;
LENGTH Company $ 15;
INPUT Company $ State $ Expense COMMA9. ;
FORMAT Expense DOLLAR9.;
*INFORMAT Expense DOLLAR10.;
RUN; * not ready;
原始数据集如下:
我可以很好地打印出第一行观察结果, 但最后一个“ 0”将转到第二个的第一个位置 行,变成“ 0Lee's ..”。 任何建议将不胜感激!
答案 0 :(得分:1)
它只是在按照您的指示去做。您告诉它准确读取9个字符。
通常,您不应该对带分隔符的数据使用格式化的输入模式。通过在:
语句的信息规范前面添加INPUT
(冒号)前缀或完全删除信息规范并使用INFORMAT
语句让SAS知道,可以防止这种情况的发生。使用信息。
但是您的数据没有正确定界,因为最后一个字段包含定界符,但是该值未用引号引起来。因此,逗号使它看起来像两个值而不是一个。真正的解决方案是修复创建文件的过程,以创建有效的带分隔符的文件。它需要用逗号括住值,或者从数字中删除逗号,或者使用数据中不出现的定界符。
幸运的是,由于它是该行的最后一个字段,因此您可以使用格式化的输入来仅读取该字段。由于您使用的是TRUNCOVER
选项,因此只需将INPUT语句中的信息宽度设置为最大即可。
DATA SASweek1.industry;
INFILE "&Dirdata.Assignment1_Q6_data.txt" DLM="," DSD termstr=crlf TRUNCOVER;
LENGTH Company $15 State $15 Expense 8;
INPUT Company State Expense COMMA32. ;
FORMAT Expense DOLLAR9.;
RUN;