PROC TRANSPOSE是SAS中用来对数据集进行行列转置的过程步,有时候可能需要经过多次PROC TRANSPOSE才能得到我们想的结果。今天无意中看到一篇博文,其中的例2(见上图),博主采用辅助变量加PROC TRANSPOSE来实现。下面我介绍另外两种方法。
- 不用PROC TRANSPOSE,代码如下:
data want; array VARL[6] DATE1 RES1 DATE2 RES2 DATE3 RES3; NUM=1; do until(last.NAME); set ex1; by NAME; VARL[NUM]=DATE; VARL[NUM+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;