SAS:在同一变量中导入不同的格式日期

时间:2016-11-25 19:44:44

标签: date import sas format

我试图导入一个包含表示为YYYYMM或YYYYMMDD格式的日期的变量(称为bdate)。 鉴于我必须导入许多具有相同问题的文件,我尝试创建自己的格式(称为日期)抛出PROC FORMAT语句。

PROC FORMAT; 
     value date
     0 - 999999 = [YYMMN6.]
     1000000 - 99999999 = [YYMMDD10.]; run;

日志没有显示任何错误消息,但当我尝试将其用于bdate变量导入时,我自己的格式不起作用:

data example;
infile ....;
        informat bdate best10. ;
        format bdate date10. ;
        run;

如何解决此问题?

2 个答案:

答案 0 :(得分:2)

您需要定义信息,而不是格式。格式用于显示数据,信息用于导入数据。事实上,许多内置的SAS日期格式具有相同的信息,反之亦然,因此,在您开始定义自己的日期格式之前,区别并不明显。

PROC FORMAT; 
     invalue mydate
     0 - 999999 = [YYMMN6.]
     1000000 - 99999999 = [YYMMDD10.]; 
run;

data _null_;
  do i = 201601,20160102;
    j = input(i,mydate.);
    put j yymmdd10.;
  end;
run;

答案 1 :(得分:0)

为什么不首先将其读入字符变量,然后根据长度应用正确的信息?

data test ;
  input chardate $ ;
  if length(chardate)=6 then date=input(chardate,YYMMN6.);
  else if length(chardate)=8 then date=input(chardate,YYMMDD8.);
  format date yymmdd10. ;
  put chardate= date= ;
cards;
201601
20160125
;