Stata主、使用数据集均含重复值时的全匹配合并方法
Stata 组内全匹配解决方案
测试数据集生成代码
先生成两个用于测试的Stata数据集:
clear all set obs 4 gen a = _n<3 gen b = "b_"+string(_n) gen n = _n tempfile data1 save `data1' clear all set obs 4 gen a = _n<3 gen c = "c_"+string(_n) tempfile data2 save `data2'
需求说明
两个数据集在变量a层面均存在重复值,需要将data1中的每一条观测与data2中变量a取值相同的所有观测匹配,最终得到包含8条观测的合并数据集。常规的merge 1:1、m:1、1:m及m:m命令均无法满足该需求,当前分组合并后追加的方法可行但操作繁琐,需更简便的实现方式。
原繁琐实现代码
use `data1', clear bys a (n): keep if _n==1 merge 1:m a using `data2', nogen sort b tempfile m1 save `m1' use `data1', clear bys a (n): keep if _n==2 merge 1:m a using `data2', nogen sort b tempfile m2 save `m2' use `m1', clear append using `m2'
简便实现方法
使用Stata内置的joinby命令即可一步完成需求,该命令会按指定变量分组,对每组内的两个数据集做笛卡尔积匹配:
use `data1', clear joinby a using `data2'
执行后直接得到8条观测的合并数据集,完全符合需求。
内容的提问来源于stack exchange,提问作者bill999
相关产品推荐
相关产品推荐

