全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2624 11
2016-04-25
如题。
数据如下:
ID  C  c1  c2  c3
1   o   0    .    .
1   o   .    1   .
1   o   .    .   2
1   I   0   .   .
1   I   .   2   .
1   I   .   .   4
2   o  0  .   .
2   o  .   1  .
2   o  .  .   2
希望整理为:
ID   C   C1   C2   C3
1     o   0    1     2
1     i    0    2     4
2     o   0    1     2
求大神支招或者提供思路。

数据输入代码:
data test;
input  id  c  $  c1 c2 c3 @@;
cards;
1   o   0    .    .
1   o   .    1   .
1   o   .    .   2
1   I   0   .   .
1   I   .   2   .
1   I   .   .   4
2   o  0  .   .
2   o  .   1  .
2   o  .  .   2

;
run;

二维码

扫码加我 拉你入群

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

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

全部回复
2016-4-25 23:24:55
proc means data=test;
   var c1 c2 c3;
   by id c;
   output out=new(drop=_type_ _freq_) max=c1 c2 c3;
run;
二维码

扫码加我 拉你入群

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

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

2016-4-26 05:31:14
dogmamongo 发表于 2016-4-25 23:24
proc means data=test;
   var c1 c2 c3;
   by id c;
这之前是不是要先sort一下下儿呢? 可以在此之前加上下面的code:
proc sort data=test;
by id c;
run;
二维码

扫码加我 拉你入群

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

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

2016-4-26 05:35:46
其实楼上已经给出了很简洁、很棒的coding了!
下面是另一种方法,用Data Step去做,供参考,也欢迎各位大侠、高手指正!

data test_1 (drop=c1 c2 c3 i);
set test;
array Cs(3) c1-c3;
do I=1 to 3;
if not missing (Cs(I)) then do;
Number=Cs(I);
output;
end;
end;
run;

proc transpose data=test_1 out=test_get (drop=_name_) prefix=c;
by id c;
var Number;
run;

希望会对你有所帮助,加油![em44]
二维码

扫码加我 拉你入群

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

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

2016-4-26 08:36:13
thank you
二维码

扫码加我 拉你入群

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

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

2016-4-26 09:07:59
dogmamongo 发表于 2016-4-25 23:24
proc means data=test;
   var c1 c2 c3;
   by id c;
哇,好思路!可是如果c1-c3是字符串呢?
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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