Proc Transpose SAS:转置和重命名变量

时间:2014-06-04 15:07:36

标签: sas rename transpose

我有一个proc转置问题。我的代码并没有给我我想要的东西。

data have;
    input name $ x y z;
cards;
jon 1 85 1300
jon 2 90 2000
jon 3 95 1800
hal 1 70 1500
hal 2 78 4000
hal 3 83 3000
;
run;

proc sort data=have;
    by name;
run;

proc transpose data=have out=want;
    by name;
run;

我想最终得到一个如下所示的数据集:

name  y1  y2  y3  z1    z2    z3
hal   70  78  83  1500  4000  3000
jon   85  90  95  1300  2000  1800

这里最重要的是能够为每个名字获得一行。辅助是使用x变量重命名其他变量(y1,y2,y3等)的能力。我知道第一部分可能很容易。想法?

感谢。

1 个答案:

答案 0 :(得分:4)

您需要在表单中填写 (通过变量)(变量名)(变量值)

在这种情况下,这意味着每人六行,name varname value

您可以轻松完成此操作:

data have_pret;
 set have;
 varname=cats('y',x);
 value=y;
 output;
 varname=cats('z',x);
 value=z;
 output;
 keep name value varname;
run;

然后你可以运行proc transpose:

proc transpose data=have_pret out=want;
 by name;
 id varname;
 var value;
run;