Proc转置SAS:转置和重命名变量
我有一个proc转置问题。我拥有的代码并不能满足我的需求Proc转置SAS:转置和重命名变量,sas,rename,transpose,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;
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等)。我知道第一部分可能很简单。想法
谢谢。您需要在表格中填写 (按变量)(变量名称)(变量值) 在本例中,这意味着每人六行,带有
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;
你需要把它做成表格 (按变量)(变量名称)(变量值) 在本例中,这意味着每人六行,带有
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;
谢谢Joe——我找到了另一种方法,但你的方法看起来更有效:数据有;输入名称$x y z;卡;乔恩1851300乔恩2902000乔恩3951800哈尔1701500哈尔2784000哈尔3833000;跑proc sort data=have;按姓名跑proc transpose data=have out=haveout;名为x;跑数据丢失;格式_name_u32。;出发;_uname_u=strip(x)| |“”| | strip(_name_uu);跑proc transpose data=haveout=want(drop=\u name\uu);按姓名col1变种;运行代码>谢谢Joe--我找到了另一种方法,但是你的方法看起来更有效:数据有;输入名称$x y z;卡;乔恩1851300乔恩2902000乔恩3951800哈尔1701500哈尔2784000哈尔3833000;跑proc sort data=have;按姓名跑proc transpose data=have out=haveout;名为x;跑数据丢失;格式_name_u32。;出发;_uname_u=strip(x)| |“”| | strip(_name_uu);跑proc transpose data=haveout=want(drop=\u name\uu);按姓名col1变种;运行代码>