Stata的合并有两类:一类是纵向合并,另外一类是横向合并。本篇介绍横向合并的几种方法。
1.一对一合并
merge 1:1 varlist using filename [, options]
*示例1
webuse autoexpense, clear
save temp1, replace
webuse autosize, clear
save temp2, replace
use temp1, clear
merge 1:1 make using temp2 //按照变量make对两个文件横向合并
*示例2
clear
cd "C:\Users\Van\Desktop\download\data analysis"
use 资产负债表, clear
merge 1:1 stkcd year using 利润表
keep if _merge == 3 //保留匹配成功的样本
drop _merge
2.一对多合并
merge 1:m varlist using filename [, options]
*示例1
webuse dollars, clear
save temp3, replace
webuse sforce, clear
save temp4, replace
use temp3, clear
merge 1:m region using temp4 //多对一合并(先导入一一对应关系的数据,后导入多对应关系的数据)
*示例2
use 行业分类, clear
merge 1:m stkcd using 财务报表
keep if _merge == 3
3.多对一合并
merge m:1 varlist using filename [, options]
*示例1
webuse dollars, clear
save temp3, replace
webuse sforce, clear
save temp4, replace
use temp4, clear
merge m:1 region using temp3 //多对一合并(先导入多对应关系的数据,后导入一一对应关系的数据)
*示例2
use 财务报表, clear
merge m:1 stkcd using 行业分类
keep if _merge == 3
4.多对多合并
merge m:m varlist using filename [, options]
*示例
clear
input id str3 v1
1 "a"
1 "b"
1 "c"
2 "d"
2 "e"
end
save 1.dta, replace
clear
input id str3 v2
1 "f"
1 "g"
2 "h"
2 "i"
2 "j"
end
save 2.dta, replace
use 1.dta, clear
merge m:m id using 2.dta
drop _merge
![](https://img.haomeiwen.com/i16938733/af9feb0a8bb6eb7b.png)
但这种合并结果并非我们通常想要的,此时需要用组内交叉合并(joinnby)
joinby [varlist] using filename [, options]
*示例1
use 1.dta, clear
joinby id using 2.dta
sort id v1 v2
其结果如图所示
![](https://img.haomeiwen.com/i16938733/00aa050405c7b12d.png)
*示例2
clear
set more off
input stkcd str15 date
000001 "2006-03-01"
000001 "2007-06-05"
000001 "2007-05-05"
000001 "2010-03-01"
000001 "2013-05-06"
000002 "2003-07-25"
000002 "2009-08-16"
000002 "2010-05-09"
end
save 事件列表,replace
use 事件列表, clear
joinby stkcd using 停复牌
gen date1 = date(date,"YMD") //将原来日期改为数值格式,便于后面比较
gen num = 1 if date1 >= startdate & date1 <= enddate
keep if num == 1 //保留属于停牌期间的
merge 1:1 stkcd date using 事件列表
keep if _merge == 2 //保留匹配不成功的,即不属于停牌期间的
keep stkcd date
以上只是两个文件合并,如果想合并多个文件可以用外部命令mergemany
,详见
204 Stata命令:mergemany
参考资料:
【爬虫俱乐部】精通Stata之数据整理
网友评论