全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3379 10
2014-07-03
数据大概是这样滴

ID  r1c1 r1c2 r1c3  r2c1 r2c2 r2c3.....r170c1 r170c2 r170c3
101  25  22  36    95   86    77........      52       53         55

转后:
ID  row  c1   c2   c3
101  1    25   22   36
101  2    95   86   77
...
101 170 52  53  55

请问用transpose能一次搞定吗???
二维码

扫码加我 拉你入群

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

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

全部回复
2014-7-3 15:45:47
我现在想到的办法是把数据分成c1、c2、c3三部分,分别转置再拼在一起

不知有没有更好的方法
二维码

扫码加我 拉你入群

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

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

2014-7-3 15:48:22
在excel中,复制——黏贴——选择性黏贴——转置,试试看能不能达到目的。
二维码

扫码加我 拉你入群

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

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

2014-7-3 16:07:33
我能想到的是用两步transpose, 一步搞定我没想到:

data test;
input ID $ r1c1 r1c2 r1c3  r2c1 r2c2 r2c3 r3c1 r3c2 r3c3;
cards;
101  25  22  36  95  86  77  52  53  55 66 77 88
;

proc transpose data=test out=trans1;
by notsorted id;
var r:;
run;

data trans2;
set trans1;
row=substr(_name_,2,index(upcase(_name_),'C')-2);
drop _name_;
run;

proc transpose data=trans2 out=wanted(drop=_name_) prefix=c;
by notsorted id row;
var col1;
run;
二维码

扫码加我 拉你入群

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

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

2014-7-3 16:17:58
data _null_;
    call execute('data wanted; set test;');
        do i=1 to 170;          
           call execute(cats('row=',i,';'));
           call execute(cats('c1=r',i,'c1',';'));
           call execute(cats('c2=r',i,'c2',';'));
           call execute(cats('c3=r',i,'c3',';'));
           call execute('output;');
        end;
        call execute('keep id row c1 c2 c3; run;');
run;
二维码

扫码加我 拉你入群

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

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

2014-7-3 16:52:17
小斜 发表于 2014-7-3 15:48
在excel中,复制——黏贴——选择性黏贴——转置,试试看能不能达到目的。
这个....... excel 就算了

就是为了复用才用sas的
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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