全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1531 8
2012-12-11
data idwrong;
input id name $ birth;
cards;
1 张三 88
2 李四 87
4 周看 90
12 李四 85
;

data idright;
input id name $ birth;
cards;
3 李四 85
5 周看 90
;

简单来说,每个数据集的id号没有重复的,idwrong中有些id是错误的,要用idright中的正确的id来替换它,判断两个数据集中属于同一个人的标志是name和birth相同。
最后的结果应该是
1 张三 88
2 李四 87
5 周看 90
3 李四 85



怎么不对数据集sort的情况下实现上述需求?
二维码

扫码加我 拉你入群

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

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

全部回复
2012-12-11 15:44:03
补充说明:
因为我的数据idwrong比较大,idright很少,所以我不想改变现有idwrong的观测顺序
下面一个代码,改变了原来idwrong的观测顺序,有没有什么办法改进?
proc sql;
create table final as
select a.*,b.id as id2 from idwrong a left join idright b
on a.name=b.name and a.birth=b.birth;
quit;
data final;
set final;
if id2^=. then id=id2;
drop id2;
run;
二维码

扫码加我 拉你入群

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

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

2012-12-11 15:46:02
data idwrong;
input id name $ birth;
cards;
1 张三 88
2 李四 87
4 周看 90
12 李四 85
;

data idright;
input id name $ birth;
cards;
3 李四 85
5 周看 90
;
run;

proc sql;
create table test as
select (case when b.id is missing then a.id else b.id end ) as id ,a.name,a.birth from
idwrong a left join  idright b
on a.name=b.name and a.birth=b.birth
order by a.id;
quit;
二维码

扫码加我 拉你入群

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

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

2012-12-11 16:06:12
ziyenano 发表于 2012-12-11 15:46
data idwrong;
input id name $ birth;
cards;
唉,对sql不是太熟悉,忘了order by 语句。
请问一下高手:sql选择观测的原理是什么?
为什么不用order by时观测的顺序是那样的,而不是跟第一个数据集的一致?
二维码

扫码加我 拉你入群

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

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

2012-12-11 16:11:00
data wanted;
  if 0 then set idright;
   *** define Hash object;
   declare hash h(dataset:'idright');
        h.definekey('name','birth');
                h.definedata('id');
                h.definedone();

   do until(last);
      set idwrong end=last;
          _n_=h.find();
          output;
          end;
        stop;
run;
二维码

扫码加我 拉你入群

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

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

2012-12-11 16:18:33
Imasasor 发表于 2012-12-11 16:06
唉,对sql不是太熟悉,忘了order by 语句。
请问一下高手:sql选择观测的原理是什么?
为什么不用order ...
根据唯一主键匹配,通常用的算法是B-Tree,
或者根据hash算法,
对B-Tree的算法我也不是很清楚~
其实很多数据库可以用基于两张表的update,
这样原数据集的顺序是不会变的,
只是SAS sql中基于两张表的update不怎么好用
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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