全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1207 20
2019-05-28
悬赏 600 个论坛币 已解决
重金悬赏:求SAS大牛解决SAS数据合并问题

具体请看附件。感觉不够可以再加。
SAS数据问题.xlsx
大小:(19.04 KB)

 马上下载



但是请详细解答。 可以把附件中的三个Table 放到自己的Excel 里取出评论上传到SAS里,并详细说明如何实现Table 4 里的结果结构。 这个数据只是样本不是真实数字,作为参考。 但是实际要解决的人数有几十万,需要用SAS运转要比Excel 更快更有效。

有超过一年没用SAS了,所以不少功能都生疏了,所以特来此版求教。 请把 SAS 编码放到回帖中并加以解释中间步骤的串联性。 经楼主检测能运转后24小时内发放悬赏奖励。

谢谢支持。  

能否提出用SAS Hash 解决的具体方案? 实际数据很大,一条生产链可能少,但要扩及整个系统,proc transpose 会运转缓慢,因为临时产生的数据很大。

最佳答案

l1i2n3i4n5g 查看完整内容

proc sort data=Mbr_Info out=test1; by Member_ID Main_Category; run; proc transpose data=test1 out=test2; var Category:; by Member_ID Main_Category; run; proc sql; create table test3 as select distinct test2.Member_ID, test2.Main_Category, sum(COL1*Weight) as Sum_Category from test2 left join Mbr_weights on test2.Main_Category=Mbr_weights.Main_Category and catego ...
二维码

扫码加我 拉你入群

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

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

全部回复
2019-5-28 08:40:21
proc sort data=Mbr_Info out=test1;
   by Member_ID Main_Category;
run;

proc transpose data=test1 out=test2;
   var Category:;
   by Member_ID Main_Category;
run;

proc sql;
   create table test3 as
   select distinct test2.Member_ID, test2.Main_Category, sum(COL1*Weight) as Sum_Category from
   test2 left join Mbr_weights
   on test2.Main_Category=Mbr_weights.Main_Category and category=_NAME_
   group by Member_ID || test2.Main_Category
;
quit;

proc transpose data=test3 out=table4;
   id Main_Category;
   var Sum_Category;
   by Member_ID;
run;
二维码

扫码加我 拉你入群

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

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

2019-5-28 10:46:59
l1i2n3i4n5g 发表于 2019-5-28 10:14
proc sort data=Mbr_Info out=test1;
   by Member_ID Main_Category;
run;
我明早开完会去试试,如果有其他问题,还请继续跟进回答。 谢谢。
二维码

扫码加我 拉你入群

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

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

2019-5-28 10:56:47
l1i2n3i4n5g 发表于 2019-5-28 10:14
proc sort data=Mbr_Info out=test1;
   by Member_ID Main_Category;
run;
proc sql 步骤没看明白。 COL1 是指proc transpose 后test2 里的column 1 吗? 为什么有了sum() statement 还要在前面select distinct test2.member_id? 有了aggregate function 应该就是一个member_id 只有一行数据才对吧?

请先解释上边问题我明早去试试。
二维码

扫码加我 拉你入群

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

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

2019-5-29 09:13:13
l1i2n3i4n5g 发表于 2019-5-28 10:14
proc sort data=Mbr_Info out=test1;
   by Member_ID Main_Category;
run;
这个proc transpose data=test1 out=test2 里的var 应该是Table_1 里的Category 1-5 分别列出来而不是Table_2里的总结Category,虽然这里不会影响什么但是如果Table_1 是几十列数据十几万行,那transpose 完了,会产生十几倍甚至几十倍的临时数据。 还有更有效省时间的方法吗? 我修改了一下你的code 跑了一下可以运转但是一两个小时才跑完。 因为数据有可能有别的问题,所以得多跑几次查错或检验个别outlier 这程序跑起来还是有点慢,不过还是谢谢啦。
二维码

扫码加我 拉你入群

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

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

2019-5-29 12:02:43
l1i2n3i4n5g 发表于 2019-5-28 10:14
proc sort data=Mbr_Info out=test1;
   by Member_ID Main_Category;
run;
这个问题可以用SAS Hash 解决吗? 我记得Hash 对于大数据库很有效。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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