Stata中实现Data1与Data2的Left join及匹配结果解读求助
在Stata中实现左连接(Left Join)的正确方法
问题分析
你要实现的是左连接:保留主数据集(Data1)的所有记录,同时匹配使用数据集(Data2)中对应ID的所有条目。你之前用的merge m:m是多对多合并,虽然没报错,但不是实现左连接的正确方式,容易混淆匹配结果。
正确操作步骤
- 先打开主数据集Data1:
use "filepath/Data1.dta", clear - 执行1:m类型的合并(Data1里每个ID唯一,Data2里同一个ID可能有多条记录,属于1对多关系),并指定保留主数据集的所有记录:
merge 1:m ID using "filepath/Data2.dta", keep(master match)1:m:明确主数据集(master)的ID是唯一值,使用数据集(using)的ID可以重复keep(master match):保留两类记录:仅在主数据集存在的(master)、两边匹配成功的(match),完全符合左连接的需求
解读合并结果里的_merge变量
合并后Stata会自动生成_merge变量,标记每条记录的匹配状态:
_merge=1:仅在Data1中存在的记录(比如你的ID=2),对应Discharge为缺失值._merge=3:在Data1和Data2中都匹配到的记录(比如你的ID=1和3),对应Data2里的Discharge值
如果不需要这个变量,可以执行:
drop _merge
验证结果
执行完上述命令后,你就能得到预期的数据集:
ID Hospital Discharge 1 Hospital A Y 1 Hospital A N 2 Hospital B . 3 Hospital C Y
内容的提问来源于stack exchange,提问作者Prajwal Mani Pradhan
相关产品推荐
相关产品推荐

