0

私はネットワーク分析に取り組んでおり、次のようなデータセットがあります

**ID-code | ego  |  alter1  |alter2 |alter3 |Office**
100       | JHON |  ROCKY   |JOE    |MOLLY  |   1
101       |ROCKY |  JOE     |MOLLY  |JHON   |   1
102       | JOE  |  MOLLY   |JHON   |  .    |   1
103       | MOLLY|  ROCKY   | .     |  .    |   1 

ご覧のとおり、各エゴは同じオフィスから最大 3 つのアルターを指名するように要求されています。

このような新しい変数/列を取得するために、IDコードとその名前を一致させたいと思います

   **ID-code ego|   ID_alter1   |ID_alter2  |ID_alter3**
    100JHON     |    101ROCKY   |102JOE     |103MOLLY
    101ROCKY    |    102JOE     |103MOLLY   |100JHON
    102JOE      |    103MOLLY   |100JHON    |    .
    103MOLLY    |    101ROCKY   |  .        |    .

変数 ID コードのエゴを取得する方法は既に知っています。

*egen ID-code ego= concat (ID-code ego)*

しかし、他の観測を ID コードと一致させる方法がわかりません。

どんな提案も大歓迎です。

ありがとう、アメデオ

4

2 に答える 2

1

Kevin Crow は、これを非常に簡単にする vlookup クローンを作成しました。

clear
input int id_code str5 ego str5 alter1 str5 alter2 str5 alter3
100 "JOHN" "ROCKY" "JOE" "MOLLY"
101 "ROCKY" "JOE" "MOLLY" "JOHN"
102 "JOE" "MOLLY" "JOHN" ""
103 "MOLLY" "ROCKY" "" ""
end
capture net install vlookup, from(http://www.stata.com/users/kcrow)
gen id_code_ego = string(id) + ego
forvalues i=1/3 {
    vlookup alter`i', gen(code) key(ego) value(id_code)
    gen id_alter`i' = string(code) + alter`i'
    drop alter`i' code
}
drop id_code ego

補遺:

clear
input int id_code str5 ego str5 alter1 str5 alter2 str5 alter3 int officer
100 "JOHN" "ROCKY" "JOE" "MOLLY" 1
101 "ROCKY" "JOE" "MOLLY" "JOHN" 1
102 "JOE" "MOLLY" "JOHN" "" 1
103 "MOLLY" "ROCKY" "" "" 1
103 "JOHN" "ROCKY" "JOE" "MOLLY" 2
102 "ROCKY" "JOE" "MOLLY" "JOHN" 2
101 "JOE" "MOLLY" "JOHN" "" 2
100 "MOLLY" "ROCKY" "" "" 2
end
capture net install vlookup, from(http://www.stata.com/users/kcrow)

gen id_code_ego_officer = string(id) + ego + string(officer)
gen ego_officer = ego + string(office)

forvalues i=1/3 {
    replace alter`i'= alter`i' + string(officer) 
    vlookup alter`i', gen(code) key(ego_officer) value(id_code)
    gen id_alter`i' = string(code) + alter`i'
    replace id_alter`i' = regexr(id_alter`i',"[0-9]?$","")
    drop alter`i' code  
}

drop id_code_ego_officer ego_officer
于 2016-05-13T07:24:22.827 に答える