楼主: fujingchi
2711 3

[数据管理求助] merge m:m 合并文件求助! [推广有奖]

  • 0关注
  • 0粉丝

大专生

76%

还不是VIP/贵宾

-

威望
0
论坛币
8 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
491 点
帖子
50
精华
0
在线时间
42 小时
注册时间
2014-7-23
最后登录
2015-8-31

楼主
fujingchi 发表于 2014-8-7 16:08:09 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我现在有两个数据文件:
文件一:                                                文件二:
ID          VAR1                                         ID          VAR2     
1             A                                              1               甲   
2             A                                              1               乙
1             C                                              2               甲
1             B                                             
2             D                                             

我想达到的目的是得到文件三:

ID           VAR1          VAR2
1               A                 甲
1               A                 乙
1               B                 甲
1               B                 乙
1               C                 甲
1               C                 乙
2               A                 甲
2               D                 甲

我用的命令是:merge ID using 文件二,keep(match)
但实际得到的观测数量却少了很多,请问要达到我想要的结果,我应该用什么命令?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Merge Match Using 数据文件 keep

沙发
chrisky 发表于 2014-8-7 20:07:08
我的思路是将其中一个表进行拆分。这样就转化为m:1型的合并了。然后在append即可。
DATABASE1 是第一个数据集
DATABASE2 是第二个数据集
DATABASE_result是第三个数据集。

QQ截图20140807200520.png

  1. use DATABASE2,clear
  2. bys id:gen n=_n
  3. egen N=max(n)
  4. local tn=N
  5. save "db2a",replace

  6. forvalues i=1(1)`tn' {
  7. use db2a,clear
  8. keep if n==`i'
  9. drop n N
  10. save "db2a_`i'",replace
  11. }

  12. forvalues i=1(1)`tn' {
  13. use DATABASE1,clear
  14. merge m:1 id using db2a_`i'
  15. keep if _merge==3
  16. drop _merge
  17. save "db2b_`i'",replace
  18. }
  19. use db2b_1,clear
  20. forvalues i=2(1)`tn' {
  21. append using db2b_`i'
  22. }
  23. sort id var1
  24. save "DATABASE_result",replace
复制代码

藤椅
蓝色 发表于 2014-8-7 20:16:10
  1. clear
  2. input ///
  3. id           str2 x1   
  4. 1             A
  5. 1             B              
  6. 1             C                                   
  7. 2             A                                             
  8. 2             D
  9. end
  10. save d:\temp\tdata001.dta,replace

  11. clear
  12. input ///
  13. id        str2 x2   
  14. 1             甲                                   
  15. 1             乙                                             
  16. 2             甲
  17. end
  18. save d:\temp\tdata002.dta,replace

  19. use  d:\temp\tdata001.dta,clear
  20. joinby  id  using d:\temp\tdata002.dta
  21. sort id x1
  22. list
复制代码


板凳
fujingchi 发表于 2014-8-8 10:05:18
蓝色 发表于 2014-8-7 20:16
方法可行,谢谢!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-31 09:47