批量格式化多个数据集中的日期

时间:2017-04-17 21:14:25

标签: excel date csv import sas

我使用proc import将一些excel电子表格提取到sas中。但是我现在需要将数据集连接在一起,并且需要所有数据集的统一日期格式。它们目前采用字符格式,有些结构为' 1999Q1'日期和一些日期' 12/02 / 2013'日期。关于如何更改所有数据集中所有日期的格式的任何帮助?

1 个答案:

答案 0 :(得分:1)

您需要使用INPUT()函数将字符串转换为日期,以便合并它们。让我们制作一些样本数据集来模拟您从Excel工作表中导入的内容。

data have1;
  date='1999Q1';
  var1=1;
run;
data have2;
  date='02DEC2013'd ;
  format date yymmdd10.; 
  var2=2;
run;

现在让我们从这些数据集中获取变量名称和类型。

proc contents data=work._all_ noprint out=contents; run;

我们可以使用此元数据编写一些代码,将字符串转换为日期。

filename code temp;
data _null_;
  set contents;
  where upcase(name)='DATE' and type=2;
  file code ;
  length dsn $41;
  dsn=catx('.',libname,memname);
  put 'data ' dsn ';'
    / '  set ' dsn ';'
    / '  datenum=input(date,anydtdte.);'
    / '  format datenum yymmdd10.;'
    / '  rename datenum=date date=datechar;'
    / 'run;'
  ;
run;

%inc code / source2 ;

现在我们可以合并数据集。

data want ;
  merge have1 have2;
  by date;
run;