全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1679 9
2012-05-30
Hi 在编程的过程中出现一个疑问问题!!希望大家帮忙答疑哇!!
proc sql;
create table retvar as
select a.*, b.aret, b.resp from rerr as a left join resp_t as b
on a.firmi = b.firmi and a.datadate = b.datadate;
quit;
这个非常普通的程序 运行之后出现好几倍的 重复观测值!!本来 rerr数据集一个大约50万个observation,resp_b 大约10万个observation,生成的数据集retvar一共竟有几千万个 observation!!这是怎么产生的??!!我之后使用了proc sort data =retvar nodupkey;
by firmi datadate peer;
run;
去掉了90%的重复值!!
童鞋们 我以前也遇到过类似的问题 一直不知道问题出在哪里,还请告知其中原理哇!!不胜感激!!
二维码

扫码加我 拉你入群

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

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

全部回复
2012-5-30 20:59:40
顶一下啊
二维码

扫码加我 拉你入群

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

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

2012-5-30 21:45:55
遇到过一次拼接导致数据量狂增的情况,主要原因是
on a.xx=b.xx;
这个语句中a数据表中的XX和b数据表中的xx分别有几千条空白数据
空白和空白相等导致数据变成几千乘以几千,最终数据暴增

您的情况要具体看,我遇到的情况仅供参考
二维码

扫码加我 拉你入群

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

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

2012-5-30 21:56:07
出现重复观测值是因为匹配时出现了多对多的情况,建议在Select语句中添加Distinct
二维码

扫码加我 拉你入群

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

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

2012-5-30 23:10:19
For example, in data "rerr", you have
firmi   database  peer
1       1            1
1       1            2
1       1            3
....

And in data "resp_t", you have
firmi   database  aret
1       1            0.89
1       1            0.12
1       1            0.40
...

By merging, you will have
firmi   database  peer  aret
1       1            1       0.89 *
1       1            1       0.12
1       1            1       0.40
1       1            2       0.89 *
1       1            2       0.12
1       1            2       0.40
1       1            3       0.89 *
1       1            3       0.12
1       1            3       0.40   
...

When you perform proc sort, only the row with * will remain in the sorted data set. The question is which data set is the real one you want.
二维码

扫码加我 拉你入群

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

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

2012-5-30 23:35:42
楼上正解
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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