2016-12-14 140 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) | 
    +---------------------------------------------------+