请教关于宏的两个问题:
1. 将多个数据集合并为一个数据集;
data data_all;
set data1998 data1999 data2000 data2001 data2002 data2003 data2004 data2005;
run;
用下述宏语言改写,为什么无法执行?
%macro names(name,number);
%do n=1998 %to &number;
&name&n;
%end;
%mend names;
data data_all;
set %names(data,2005);
run;
2.同时对数个不同的变量进行重命名(看来宏语言和数组的结合很强大,但比较难)
data new;
set old;
rename x1=new_x1;
rename y2=new_y2;
...;
rename zn=new_zn;
run;
用宏语言编写,无法运行:
%macro rename(startvar,endvar,pre);
data new;
set old;
array oldvar(*) &startvar--&endvar;
array newvar(*) &pre&startvar--&pre&endvar;/*SAS无法定义新变量*/
%do i=1 %to dim(oldvar);
rename newvar(i)=oldvar(i);
%end;
run;
%mend rename;
%rename(x1,zn,new_)