一个关于SAS转置的问题

  TransposePROC TRANSPOSE是SAS中用来对数据集进行行列转置的过程步,有时候可能需要经过多次PROC TRANSPOSE才能得到我们想的结果。今天无意中看到一篇博文,其中的例2(见上图),博主采用辅助变量加PROC TRANSPOSE来实现。下面我介绍另外两种方法。

  1. 不用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;
  2. 只用一次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;
    
曾宪华 /
本文采用 署名-非商业性使用-相同方式共享 3.0许可协议 属于 程序人生 分类, 被贴了 PROC TRANSPOSE 转置 书签

上一篇 SAS中哈希表的连接问题
下一篇 SAS中产生笛卡尔积的几种方法