不好意思,想不出用dictionary.column更好的technique了:-(。
抛个砖吧。
DATA A;
INPUT code var1_2001 var1_2002 var2_2001 var2_2002;
datalines;
0001 0.1 0.2 12 10
0002 0.2 0.3 13 10
0003 0.1 0.4 11 11
;
run;
%macro wide2long (lib=work, dsn=a );
proc transpose data=&lib..&dsn out=b;
by code;
run;
data byear;
set b;
by code _name_;
year=put(scan(_name_,2,'_'),4.);
_name_=scan(_name_,1,'_');
run;
proc sort data=byear out=sorted;
by code year;
run;
proc transpose data=sorted out=transposed (drop=_name_);
by code year;
run;
%mend;
%wide2long;