PROC TRANSPOSE是SAS中用来对数据集进行行列转置的过程步,有时候可能需要经过多次PROC TRANSPOSE才能得到我们想的结果。今天无意中看到一篇博文,其中的例2(见上图),博主采用辅助变量加PROC TRANSPOSE来实现。下面我介绍另外两种方法。
- 不用PROC TRANSPOSE,代码如下:
data want;
array VARL6 DATE1 RES1 DATE2 RES2 DATE3 RES3;
NUM=1;
do until(last.NAME);
set ex1;
by NAME;
VARLNUM=DATE;
VARLNUM 1=RES;
NUM=NUM 2;
end;
drop NUM DATE RES;
run;
- 只用一次PROC TRANSPOSE,代码如下:
data temp;
set ex1;
array varlist DATE RES;
do I=1 to dim(varlist);
VAR1=varlist(i);
output;
end;
run;
proc transpose data=temp out=want;
by NAME;
var VAR1;
run;