全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6401 7
2014-08-12
悬赏 30 个论坛币 已解决
求教:想用merge将两个数据bond和code合并起来,合并by的字段Bondname为中文文本,然后合并后的结果中只有12个观测,但是用Excel做vlookup的结果有近200个,为什么呢?多谢!
bond.txt
大小:(5.21 KB)

 马上下载


code.txt
大小:(354.96 KB)

 马上下载


SAS结果.txt
大小:(687 Bytes)

 马上下载



最佳答案

yzsxdlcc 查看完整内容

proc sort data=bond out=bond2; by bondname; run; proc sort data=code out=code2; by bondname; run; data test3; merge bond2(in=abc) code2(in=bcd); by bondname; if abc=1; run; 跑出来是205个,不知道对不对。
二维码

扫码加我 拉你入群

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

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

全部回复
2014-8-12 17:06:03

proc sort data=bond out=bond2;
by bondname;
run;

proc sort data=code out=code2;
by bondname;
run;

data test3;
merge bond2(in=abc)
code2(in=bcd);
by bondname;
if abc=1;
run;
跑出来是205个,不知道对不对。
二维码

扫码加我 拉你入群

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

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

2014-8-12 17:17:08
重点在于理解sas中merge合并的原理。merge有左连接,右连接,内连接,全连接。以及  in = 选项的正确使用。
二维码

扫码加我 拉你入群

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

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

2014-8-12 17:22:33
一般都用对合并数据集按关键词排序(proc sort data=...; by Bondname; run;)。试试。
二维码

扫码加我 拉你入群

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

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

2014-8-13 10:33:56
yzsxdlcc 发表于 2014-8-12 20:44
proc sort data=bond out=bond2;
by bondname;
run;
谢谢~Bond中是有205个观测,按您的方法跑出来以后的test3也有205个观测,但是test3中的Bondcode字段仍然绝大部分都是缺省值,这和Excel中vlookup做出来只有不到十个缺省值的结果还是不一样,问题还是木有解决啊~我怀疑是不是匹配的字段有问题啊,但是我也没看出来…
二维码

扫码加我 拉你入群

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

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

2014-8-13 10:34:44
hexh 发表于 2014-8-12 17:22
一般都用对合并数据集按关键词排序(proc sort data=...; by Bondname; run;)。试试。
merge之前已经排过序啦~
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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