全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
2963 3
2021-12-17

stata如何先用一个变量匹配,没匹配上的再用另一个变量进行merge

求问大家,在merge A和B两个库的时候,先用ID1进行merge,结果有一部分A没有匹配上。然后就想到用ID2来进一步merge,把这部分没匹配上的匹配上。请问这个逻辑怎么实现呢?就比如:

数据库A
id1 id2 sells
1   11   4
1   11   5
1   11   6
2   22   3
2   22   3
3   33   4
3   33   2
数据库B
id1 id2 costs
1   11   0.2
2   .    0.3
.   33   0.4

最后期望得到的是
id1 id2 sells costs
1   11   4     0.2
1   11   5     0.2
1   11   6     0.2
2   22   3     0.3
2   22   3     0.3
3   33   4     0.4
3   33   2     0.4

谢谢!

二维码

扫码加我 拉你入群

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

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

全部回复
2021-12-18 02:00:19
数据库B拆成两块,记数据库B为 data_B.dta
use data_B, clear
preserve
drop id2
save part1
restore
drop id1
rename costs costs_2
save part2

再分别merge到主表 data_A.dta
use data_A, clear
merge 1:1 id1 using part1
drop if _m == 2
drop _m
merge 1:1 id2 using part2
drop if _m == 2
drop _m
replace costs = costs_2 if costs == .
*id1没匹配到的空值 costs用 id2匹配上的 costs_2 替换
这样应该就行了
二维码

扫码加我 拉你入群

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

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

2021-12-18 10:04:17
第一步 用ID1匹配 没匹配上的那部分删除
第二步用剩下的 以ID2匹配
二维码

扫码加我 拉你入群

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

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

2021-12-18 14:40:31
Clyde Schechter 建议 (请先 ssc install frameappend):
复制代码
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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