如何阅读20年3月20日在sas

时间:2016-12-30 13:21:50

标签: sas

我正在尝试使用worddatx32阅读2011年3月20日的日期。格式,但它无法读取它给出错误未找到或无法加载。

我也尝试anydtdte32。但它给了。在输出中

如何在数据行中阅读2011年3月20日的日期

data sample;
infile datalines truncover dsd;
input JDate : worddatx32.;
format JDate date9.;
datalines; 
20 march 2011
;
run;

2 个答案:

答案 0 :(得分:0)

WORDDATX.是格式,您需要一个INFORMAT。尝试使用ANYDTDTE.作为信息。

data test ;
  input xx anydtdte32. ;
  format xx date9.;
  put xx= @15 _infile_;
cards;
20 march 2016
20MAR2016
;

此外,如果您要使用:修饰符,则SAS将停留在该空格处,仅读取20。添加&修饰符,它会在看到两个或多个空格时停止。如果您使用分隔输入,那么只需使用INFORMAT语句。

data test ;
  infile cards dsd truncover ;
  input xx ;
  informat xx anydtdte. ;
  format xx date9.;
  put xx= @15 _infile_;
cards;
20 march 2016
20MAR2016
;

注意:ANYDTDTE。在SAS版本9.4之前,informat不支持此格式

如果您无法使用该信息,请将该值读取为三个字段并自行转换。

input d $ m $ y $ ;
date = input(cats(d,substr(m,1,3),y),date9.);

答案 1 :(得分:0)

不确定为什么Tom的解决方案无法在你的机器上运行......这是另一种可能性:

data mydates;
  infile datalines dsd truncover delimiter=" ";
  informat day 8.
           month $3.
           year 8.;
  format mydate date9.;
  input day month year;
  mydate = input(cats(day, month, year),date9.);
datalines;
20 march 2016
18 december 16
;

Output dataset