luanzhuna 发表于 2016-11-19 08:51 
不好意思能解释一下吗,试了但是跑不出来,无法确定line和column,rename也不对,不太理解rename=y&year. ...
估计没加分号 在%jj(2001); 这里,rename 是把 y2001 这种变量 变成最终var变量 要保留y2001的value
%macro jj(year);
data y&year.;
set a(keep=stkcd place y&year. );
year=&year.;
rename y&year.=var;
run;
%mend jj;
%jj(2000);
%jj(2001);
%jj(2002);
%jj(2003);
%jj(2004);
%jj(2005);
%jj(2006);
data need;
set y2000-y2006;
proc sort;by stkcd place year;
run;