pyl*_*yll 2 transpose rename sas
我有一个过程转置问题。我拥有的代码并不能完全满足我的需求。
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;
Run Code Online (Sandbox Code Playgroud)
我想最终得到一个如下所示的数据集:
name y1 y2 y3 z1 z2 z3
hal 70 78 83 1500 4000 3000
jon 85 90 95 1300 2000 1800
Run Code Online (Sandbox Code Playgroud)
这里最重要的是能够为每个名字获取一行。其次是能够使用 x 变量重命名其他变量(y1、y2、y3 等)。我知道第一部分可能很简单。想法?
谢谢。
您需要将其制成(通过变量)(变量名称)(变量值)的形式
在本例中,这意味着每人六行,其中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;
Run Code Online (Sandbox Code Playgroud)
然后你可以运行 proc transpose:
proc transpose data=have_pret out=want;
by name;
id varname;
var value;
run;
Run Code Online (Sandbox Code Playgroud)