You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 11:35:00