全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1858 8
2012-01-23
悬赏 30 个论坛币 未解决
有一个数据是这样:

id 身高 体重
A  180  56
B  167  49
C  171  51
D  160  50
E  173  51
现在需要旋转成如下形式:

A身高  A体重  B身高  B体重  C身高  C体重 D身高 D体重  E身高 E体重
180       56     167       49       171      51     160      50      173      51

如何做到?

多谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-1-25 11:21:45
楼主您好,我觉得可能你可以用一下tabulate过程!

data temp;
input id $ height weight;
cards;
A  180  56
B  167  49
C  171  51
D  160  50
E  173  51
;

proc tabulate data=temp ;
class id height weight;
table id*(height weight);
run;
附件列表
捕获.JPG

原图尺寸 44.77 KB

捕获.JPG

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-1-26 01:21:49
Here's one way in Proc Transpose.

data test01_w(drop = h)
          test01_h(drop = w);
        input id $ h w @@;
cards;
A  180  56
B  167  49
C  171  51
D  160  50
E  173  51
;run;
data test01_w(drop = id);
        set test01_w(rename=(w=val));
        _id = compress(id||'_w');
run;
data test01_h(drop = id);
        set test01_h(rename=(h=val));
        _id = compress(id||'_h');
run;
data test01;
        set test01_w
                test01_h;
run;
proc sort data = test01;
        by _id;
run;
proc transpose data = test01 out = test02(drop = _NAME_);
        id _id;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-1-26 22:48:38
做个总结吧,如果proc的结果只用来看,那么是2楼的方法简单;如果转置后的结果需要进一步加工,那么必须得用3楼的方法,因为tabulate过程用ods输出成数据集的话形式就和所要求的形式不符了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-1-26 23:14:33
难道transpose不能转2列数据?(把2列数据,也就是、身高体重捆绑一起用id旋转)?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-1-28 21:16:42
学习了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群