2016-12-14 141 views
2

我很难将一个项目的数据集合并在一起。我们的主要数据集由个别评委组织。它是一个属性数据集。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匹配。因此,对于出现在j1,j2j3中的judge的每种情况,都会添加对该情况的观察,从而创建如下所示的数据集。

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识别可以发生。

回答

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) | 
    +---------------------------------------------------+