用两条线结束并以不同的位置开始读入SAS

时间:2018-09-12 19:16:04

标签: sas

在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;

原始数据集如下:

enter image description here

我可以很好地打印出第一行观察结果, 但最后一个“ 0”将转到第二个的第一个位置 行,变成“ 0Lee's ..”。 任何建议将不胜感激!

1 个答案:

答案 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;