SAS宏用于多个数据集

时间:2015-06-04 12:16:43

标签: sas sas-macro

我是SAS新手。我在一个文件夹中有12个(每月数据)数据集。 数据集的名称是:

201401
201402
201403
...
201411
201412

每个数据包含10个变量。所有数据的变量名称都相同。 我只需要10个中的3个变量,并按new_201401重命名数据,依此类推。

我正在使用Keep Var1 Var2 Var3;手动尝试,但有没有简单的方法或宏,所以我们可以快速进行?提前谢谢。

2 个答案:

答案 0 :(得分:1)

我认为这会解决问题:

%macro keep(table,var1,var2,var3,set);
data &table (keep=&var1 &var2 &var3);
set &set;
run;
%mend keep;

答案 1 :(得分:1)

您可以使用以下宏重命名它们(注意:%if条件只是拆分为包含一位数的前导0}:

%macro monthly(year=,prefix=) ;
  %do i=1 %to 2 ;
    %if %eval(&i<10) %then Data_&year.0&i=&prefix&i ;
    %else                  Data_&year&i=&prefix&i ;
  %end ;
%mend monthly ;

然后,您可以将这些值传递到proc datasets,无论您需要多少年:

proc datasets library=work ;
  change %monthly(year=2014,prefix=new_) %monthly(year=2015,prefix=new2_);
run ;