输入日期与数据行导致无效数据

时间:2018-08-28 09:16:00

标签: sas

这是来自有关sa的小sas书的练习和项目中的问题。 3练习10。这些问题要求我们将日期读为MMDDYY8。输入并在MMDDYY10中打印。格式。我可以使用infile从外部文件读取数据,但使用数据线会导致无效数据。预先感谢。

    data sample;
    OPTIONS YEARCUTOFF = 1950;
    INPUT date MMDDYY8.;
    DATALINES;
    01/01/1920
    ;
    run;
    proc print data = sample;
    format date MMDDYY10.;
    RUN:

SAS日志读取:

NOTE: Invalid data for date in line 173 1-12.
RULE:      ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0

173 CHAR   ..01/01/1920

 date=. _ERROR_=1 _N_=1
 NOTE: The data set WORK.SAMPLE has 1 observations and 1 variables.
 NOTE: DATA statement used (Total process time):
       real time           0.00 seconds
       cpu time            0.02 seconds

1 个答案:

答案 0 :(得分:3)

简短答案:在输入语句中使用冒号(:)来应用信息。

options YEARCUTOFF = 1950;
data sample;
input date:MMDDYY8.; /* << use : to apply informat */
datalines;
01/01/1920
;
run;

更长的答案:

常规列表输入(变量名和informat之间没有修饰符)要求数据为标准数字或字符格式。如果要导入任何类型的“特殊”数据(如格式化的日期或多个嵌入的空格或定界符),则需要使用修饰符-例如:~&来读取正确。

here提供了很好的解释,here提供了更多信息。

其他提示:

  • 选项是全局语句,它们将在数据步骤中正确解析,但是看起来很奇怪,最好将它们保留在开放代码中!
  • 始终使用分号终止语句(而不是RUN:
  • 尝试并与您的大小写一致(大写/小写),SAS并不区分大小写,但是读取您代码的人可能是大小写!