Stata与多个匹配变量合并

时间:2016-12-14 22:30:38

标签: merge stata

我在组合项目的数据集方面遇到了困难。我们的主要数据集由个别评委组织。它是一个属性数据集。

judge
  j |  x |  y |  z
----|----|----|----
  1 | 2  | 3  |  4
  2 | 5  | 6  |  7 

第二个数据集是案例数据库。每个观察都是一个案例,评委可以出现在三个变量之一中。

case
case | j1 | j2 | j3 | year
-----|----|----|----|-----
  1  |  1 |  2 |  3 | 2002
  2  |  2 |  3 |  1 | 1997

我们希望将merge案例数据库放入属性数据库,与judge匹配。因此,对于judgej1j2中出现j3的每种情况,都会添加对该案例的观察,创建如下所示的数据集。 / p>

 combined
  j |  x | y  | z  |  case |  year
 ---|----|----|----|-------|--------
  1 |  2 | 3  | 4  |   1   | 2002
  1 |  2 | 3  | 4  |   2   | 1997
  2 |  5 | 6  | 7  |   1   | 2002
  2 |  5 | 6  | 7  |   2   | 1997

我最好的猜测是使用

 rename j1 j
 merge 1:m j using case
 rename j j1
 rename j2 j
 merge 1:m j using case

但是,我不确定这是否有效,特别是因为合并数据集有三个可能发生j标识的变量。

1 个答案:

答案 0 :(得分:0)

您的示例很清楚,但更好的是将它们作为代码提供,不需要工程编辑来移除脚手架。请参阅SSC的dataexssc inst dataex)。

我认为这是遗失reshape的情况。

clear 
input   j   x   y   z
  1  2   3    4
  2  5   6    7 
end
save judge 

clear 
input case j1  j2  j3  year
  1    1   2   3  2002
  2    2   3   1  1997
end 

reshape long j , i(case) j(which) 

merge m:1 j using judge 

list

     +-------------------------------------------------------+
     | case   which   j   year   x   y   z            _merge |
     |-------------------------------------------------------|
  1. |    1       1   1   2002   2   3   4       matched (3) |
  2. |    2       3   1   1997   2   3   4       matched (3) |
  3. |    2       1   2   1997   5   6   7       matched (3) |
  4. |    1       2   2   2002   5   6   7       matched (3) |
  5. |    2       2   3   1997   .   .   .   master only (1) |
     |-------------------------------------------------------|
  6. |    1       3   3   2002   .   .   .   master only (1) |
     +-------------------------------------------------------+

drop if _merge < 3
list 

     +---------------------------------------------------+
     | case   which   j   year   x   y   z        _merge |
     |---------------------------------------------------|
  1. |    1       1   1   2002   2   3   4   matched (3) |
  2. |    2       3   1   1997   2   3   4   matched (3) |
  3. |    2       1   2   1997   5   6   7   matched (3) |
  4. |    1       2   2   2002   5   6   7   matched (3) |
     +---------------------------------------------------+