data crackman;
input a b c d e f@@;
datalines;
1 2 3 4 5 6
4 6 7 8 9 9
9 8 7 6 5 4
;
run;
proc contents data=crackman out=a(keep=name) noprint varnum;
run;
data _null_;
set a end=last;
if _n_=1 then call execute("Proc datasets nolist; modify crackman; rename ");
call execute(" "||strip(name)||"=a"||strip(_n_));
if last then call execute("; run; quit;");
run;
data a1;
input a b c d @;
cards;
1 1 1 1
;
run;
proc contents data=a1 out=a2(keep=name type);
run;
data a3;
set a2;
new_name="name"||left(_n_);
run;
proc sql;
select trim(name)||"="||new_name into: change_name SEPARATED BY " "
from a3;
quit;
%put &change_name.;
data final;
set a1;
rename &change_name.;
run;
有点小复杂 我写的
data a;
input a b c d e f;
datalines;
1 2 3 4 5 6
;
proc transpose data=a out=b prefix=x;
proc transpose data=b out=b prefix=x;
data c(drop=_name_);
set b;
proc print;
run;