全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1444 4
2009-07-07
请高手帮助有关数据行列变换

现有数据

ID  QuestionID   OptionID   Answer
1      20                    70            5
1      20                    72             4
1       50                   60            1
1        50                   65           4
2      20                    70            3
2      20                    72             2
2       50                   60            5
2        50                   65           1        
......

希望转换成

ID    20_70   20_72   50_60  50_65
1        5           4            1         4
2       3             2            5        1
.......

非常感谢
二维码

扫码加我 拉你入群

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

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

全部回复
2009-7-8 00:26:09
试一下这个:
data a;
input id qid oid answer;
datalines;
1      20                    70            5
1      20                    72             4
1       50                   60            1
1        50                   65           4
2      20                    70            3
2      20                    72             2
2       50                   60            5
2        50                   65           1
;
run;

data b;
set a;
newid=trim(qid)||'_'||trim(left(oid));
drop qid oid;
run;

proc transpose data=b out=c(drop=_NAME_);
by id;
var answer;
id newid;
run;

结果看上去是这样的:
   Obs    id    _20_70    _20_72    _50_60    _50_65

                        1      1       5         4         1         4
                        2      2       3         2         5         1
变量名是不能以数字开头的
二维码

扫码加我 拉你入群

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

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

2009-7-8 00:46:23
呵呵 不错
运行可以了
二维码

扫码加我 拉你入群

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

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

2009-7-8 10:13:03
data a;
input id qid oid answer;
newid=trim(qid)||'_'||trim(left(oid));
drop qid oid;
datalines;
1      20                   70           5
1      20                   72           4
1      50                   60           1
1      50                   65           4
2      20                   70           3
2      20                   72           2
2      50                   60           5
2      50                   65           1
;
run;
proc transpose data=a out=b(drop=_NAME_);
by id;
var answer;
id newid;
run;
这样写效果好一些
二维码

扫码加我 拉你入群

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

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

2009-7-8 10:56:31
万分感谢, 这里高手真多.
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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