在多个数据集中批量格式化date

我已经提取了一些使用PROC导入的Excel电子表格。 但是我现在需要将数据集合在一起,并且需要所有数据集的统一date格式。 他们目前是字符格式,有些是“1999Q1”date,有些是“12/02/2013”​​date。 任何帮助,我可以如何在所有数据集中更改所有date的格式?

您需要使用INPUT()函数将string转换为date,以便合并它们。 让我们来制作一些示例数据集,以模拟您可能从Excel工作表导入的内容。

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

现在让我们从这些数据集中获取variables名称和types。

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

我们可以使用这个元数据来编写一些代码来将string转换成date。

 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;