楼主: 弄潮儿713
16412 41

[一般统计问题] 使用stata进行两个数据表一对一merge时,关键变量为两个数值型变量,出现问题 [推广有奖]

31
蓝色 发表于 2018-3-28 21:29:29
tempfile master_data using_data  
cd c:\temp\
clear
input byte fresp1 long fid12                  
-8 411212
-1 312184
-1 370738
-1 410425
-1 430026
-1 440426
-1 440449
-1 602054
-1 604123
-1 801168
1 100453
1 106601
1 108244
1 108640
1 110011
1 110013
1 110015
1 110022
1 110023
1 110026
1 110027
1 110031
1 110033
1 110035
1 110040
1 110043
1 110045
1 110050
1 110056
1 110059
1 110061
1 110062
1 110063
1 110064
1 110067
1 110068
1 110069
1 110070
1 110071
1 110073
1 110076
1 110077
1 110078
1 110083
1 110084
1 110099
1 110102
1 110104
1 110105
1 110107
1 110108
1 110111
1 110116
1 110119
1 110120
1 110123
1 110124
1 110125
1 110129
1 110132
1 110142
1 110147
1 110148
1 110150
1 110160
1 110165
1 110236
1 110712
1 113415
1 114900
1 115788
1 117321
1 117661
1 118499
1 119227
1 119658
1 120004
1 120008
1 120009
1 120012
1 120013
1 120016
1 120018
1 120020
1 120022
1 120026
1 120029
1 120031
1 120032
1 120033
1 120034
1 120036
1 120038
1 120040
1 120056
1 120057
1 120058
1 120063
1 120065
1 120067
end

save "`master_data'"

clear
input double fresp1 long(fid12 pid)
1 100453 430111103
1 105179 620536107
4 105179 105179433
1 105592 430388103
2 105592 430388104
3 105592 430388105
4 105592 430388106
1 106601 211940103
2 106601 211940104
1 108244 370115104
3 108244 370115108
1 108640 620727105
1 110002 110002101
1 110003 110003101
2 110003 110003102
1 110006 110006101
2 110006 110006102
1 110009 110009101
2 110009 110009102
4 110009 110009104
5 110009 110009105
6 110009 110009106
7 110009 110009107
1 110011 110011101
2 110011 110011102
1 110013 110013101
2 110013 110013102
3 110013 110013103
1 110015 110015101
2 110015 110015104
3 110015 110015107
1 110020 110020101
2 110020 110020102
3 110020 110020103
4 110020 110020105
1 110021 110021101
2 110021 110021102
1 110022 110022101
2 110022 110022102
1 110023 110023101
2 110023 110023431
1 110024 110024101
2 110024 110024102
1 110026 110026101
2 110026 110026102
4 110026 110026104
1 110027 110027101
1 110030 110030101
2 110030 110030431
1 110031 110031101
2 110031 110031102
3 110031 110031103
1 110033 110033101
2 110033 110033102
3 110033 110033103
4 110033 110033104
5 110033 110033105
1 110035 110035101
2 110035 110035102
3 110035 110035103
1 110038 110038101
3 110038 110038103
4 110038 110038104
1 110040 110040101
2 110040 110040102
3 110040 110040103
4 110040 110040431
1 110041 110041101
2 110041 110041102
1 110042 110042101
2 110042 110042102
3 110042 110042103
1 110043 110043101
2 110043 110043102
3 110043 110043103
6 110043 110043107
1 110045 110045101
1 110047 110047101
2 110047 110047102
1 110050 110050101
2 110050 110050102
3 110050 110050103
1 110051 110051101
2 110051 110051102
3 110051 110051103
4 110051 110051104
-1 110052 110052431
1 110052 110052101
2 110052 110052102
3 110052 110052103
4 110052 110052104
1 110056 110056102
1 110057 110057101
2 110057 110057102
1 110060 110060101
2 110060 110060102
3 110060 110060103
1 110061 110061101
1 110062 110062101
2 110062 110062102
end


save "`using_data'"


use "`master_data'",clear
merge 1:1 fid12 fresp1 using  "`using_data'"

32
弄潮儿713 发表于 2018-3-29 08:39:38
蓝色 发表于 2018-3-28 21:29
tempfile master_data using_data  
cd c:\temp\
clear
请问您这是您合并的结果吗?就是要让这两个表1:1合并,我是真的不知道怎么办?我在合并时,一个表是只有fid12和fresp_01两个变量,有13315个样本,另一个表有fid12、fresp_01和pid三个变量,有35719个样本,只要按照fid12和fresp_01,一对一合并,就会出现variables fid12 fresp1_01 do not uniquely identify observations in the using data,我都不知道怎么解决?不然我把数据发给您,您把合并的结果告诉我,支付论坛币也可以,我只想解决这个问题,真是太头疼了

33
蓝色 发表于 2018-3-29 13:07:48
弄潮儿713 发表于 2018-3-29 08:39
请问您这是您合并的结果吗?就是要让这两个表1:1合并,我是真的不知道怎么办?我在合并时,一个表是只有f ...
合并的程序阿
执行程序没有问题阿

34
弄潮儿713 发表于 2018-3-29 14:35:11
蓝色 发表于 2018-3-29 13:07
合并的程序阿
执行程序没有问题阿
master.dta (66.06 KB)

using.dta (315.29 KB)


这是要合并的两个数据,请再次麻烦您帮我合并一下,我真的是按照命令merge 1:1 fid12 fresp1 using  "`using_data'"来做的,但就是不行,出现variables fid12 fresp1 do not uniquely identify observations in the using data,非常非常感谢

35
蓝色 发表于 2018-3-29 16:05:48
弄潮儿713 发表于 2018-3-29 14:35
这是要合并的两个数据,请再次麻烦您帮我合并一下,我真的是按照命令merge 1:1 fid12 fres ...
你自己看看using的数据
  1. . use "D:\temp\master.dta"

  2. . merge 1:1 fid12 fresp1 using  "D:\temp\using.dta"
  3. variables fid12 fresp1 do not uniquely identify observations in the using data
  4. r(459);

  5. . use "D:\temp\using.dta"

  6. . duplicates  report fid12 fresp1

  7. Duplicates in terms of fid12 fresp1

  8. --------------------------------------
  9.    copies | observations       surplus
  10. ----------+---------------------------
  11.         1 |        32876             0
  12.         2 |         1870           935
  13.         3 |          597           398
  14.         4 |          252           189
  15.         5 |           75            60
  16.         6 |           30            25
  17.         9 |            9             8
  18.        10 |           10             9
  19. --------------------------------------

  20. . duplicates  tag fid12 fresp1,gen(id)

  21. Duplicates in terms of fid12 fresp1

  22. . tab id

  23.          id |      Freq.     Percent        Cum.
  24. ------------+-----------------------------------
  25.           0 |     32,876       92.04       92.04
  26.           1 |      1,870        5.24       97.28
  27.           2 |        597        1.67       98.95
  28.           3 |        252        0.71       99.65
  29.           4 |         75        0.21       99.86
  30.           5 |         30        0.08       99.95
  31.           8 |          9        0.03       99.97
  32.           9 |         10        0.03      100.00
  33. ------------+-----------------------------------
  34.       Total |     35,719      100.00
复制代码
同一个fid12,fresp1有好几个值,
1:1  怎么能匹配呢
无标题.png



36
弄潮儿713 发表于 2018-3-29 17:44:51
蓝色 发表于 2018-3-29 16:05
你自己看看using的数据
同一个fid12,fresp1有好几个值,
1:1  怎么能匹配呢
是的,因为成人库把家庭所有的成员都调查了,每个人有一个编号,所以在成人库中一个家户号对应多个成员编号,而我只要户主的编号,和家庭库合并起来,所以不知道该怎么合并

37
弄潮儿713 发表于 2018-3-29 17:44:54
蓝色 发表于 2018-3-29 16:05
你自己看看using的数据
同一个fid12,fresp1有好几个值,
1:1  怎么能匹配呢
是的,因为成人库把家庭所有的成员都调查了,每个人有一个编号,所以在成人库中一个家户号对应多个成员编号,而我只要户主的编号,和家庭库合并起来,所以不知道该怎么合并

38
蓝色 发表于 2018-3-29 18:06:11
给你的截图
4行一样的fid12的编码,
那这4个人到底哪行是哪个人,怎么区分出不同的人

你还是先把数据库、merge的原理搞清楚

39
弄潮儿713 发表于 2018-3-29 18:22:45
蓝色 发表于 2018-3-29 18:06
给你的截图
4行一样的fid12的编码,
那这4个人到底哪行是哪个人,怎么区分出不同的人
非常感谢您的指导,正如您截图中指出的问题,在using data中,500175这个家庭,对应5个家庭成员的编号fresp1,为1,2和三个缺失值。而在master数据表中,500175家庭对应的fresp1户主编号只是1,所以,只保留(500175 ,1)对应的样本就可以,但我不知道怎么做才行,使用1:1合并做不到,我也不知道怎么办了

40
蓝色 发表于 2018-3-29 19:42:41
把using数据库用
duplicates  drop fid12 fresp1

剔除重复的
然后在合并

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-1 15:02