【问题标题】:SAS: importing different format dates within same variableSAS:在同一个变量中导入不同格式的日期
【发布时间】:2017-04-10 05:42:36
【问题描述】:

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

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

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

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

我该如何解决这个问题?

【问题讨论】:

    标签: date import sas format


    【解决方案1】:

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

    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
    ;
    

    【讨论】:

      【解决方案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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-15
        • 2017-10-01
        相关资源
        最近更新 更多