- use data1.dta ,clear
- sort commid hhid line wave
- save temp1
- use data2.dta ,clear
- sort commid hhid line wave
- save temp2
- use data3.dta ,clear
- sort commid hhid line wave
- save temp3
- mergemany 1:1 temp1 temp2 temp3 ,match (commid hhid line wave )
- save data22.dta
- erase temp1.dta
- erase temp2.dta
- erase temp3.dta
第二个,joinby的命令使用,举例如下:
- use data1.dta ,clear
- sort commid hhid line wave
- save temp1
- use data2.dta" ,clear
- sort commid hhid line wave
- save temp2
- use temp1,clear
- joinby commid hhid line wave using temp2,unmatched(both)_merge(_merge)//合并正常
- drop _merge
- save data11.dta
- erase temp1.dta
- erase temp2.dta
- use data11.dta ,clear
- sort commid hhid line wave
- save temp1
- use data3.dta,clear
- sort commid hhid line wave
- save temp2
- use temp1,clear
- joinby commid hhid line wave using temp2,unmatched(both)_merge(_merge)
- drop _merge
- save data22.dta
- erase temp1.dta
- erase temp2.dta
注意二,在数据合并使用joinby命令的时候,drop _merge要加上,表示去掉 _merge这个变量,要不然,进行第二步joinby数据合并的时候,会出现[color=rgba(255, 255, 0, 0)]"variable _merge already defined"这个错误,但是使用mergemany的时候不需要这一个步骤。
经过自己的测试,上述mergemany和joinby 合并最终结果是一样的。
最后提一点自己的小疑问,在使用merge的时候 ,通常比较顺利,但是偶尔也会出现报错,比如有的数据在merge时候总是报错 “变量不是唯一的标识”,但是检查之后发现也没有重复的变量,但是用joinby命令 就可以匹配 成功,不知道问题出现在哪里?希望有人解答一下我的这个疑惑。