2017-07-14 1 views
1

私は、調査データセットから有用な情報を要約しようとしています。このデータセットには調査対象者の両親に関する情報が含まれています。 1つのIDは、母親、父親、義理母、義理の父についての情報を含む4つの行を関連付けます。しかし、私は親ではなく調査対象者にのみ興味があります。例えば既存のデータセットから有用な情報をまとめ、新しいデータセットに結合するにはどうすればよいですか?

* Example generated by -dataex-. To install: ssc install dataex 
clear 
input str12 ID byte(parentID ca001) 
"010104101002" 1 2 
"010104101002" 2 1 
"010104101002" 3 1 
"010104101002" 4 1 
"010104102002" 1 2 
"010104102002" 2 2 
"010104102002" 3 2 
"010104102002" 4 1 
"010104103001" 1 2 
"010104103001" 2 2 
"010104103001" 3 2 
"010104103001" 4 1 
"010104104001" 1 2 
"010104104001" 2 2 
"010104104001" 3 2 
"010104104001" 4 1 
"010104105002" 1 2 
"010104105002" 2 2 
"010104105002" 3 2 
"010104105002" 4 2 
end 
label values parentID parent 
label def parent 1 "1 Father", modify 
label def parent 2 "2 Mother", modify 
label def parent 3 "3 Father-in-law", modify 
label def parent 4 "4 Mother-in-law", modify 
label values ca001 ca001 
label def ca001 1 "1 Yes", modify 
label def ca001 2 "2 No", modify 

ca001は、回答者の両親は(母/父/母の義理/義父)はまだ生きているかどうかを表します。私が必要とするのは、生存しているIDの親の数(0〜4)を示すダミー変数です。

私は繰り返されたIDを取り除き、1つの観測に対して1つの一意のIDを持つ必要があります。これは、私がmergeこのデータセットと他のデータセットとの間で一意のIDを照合することによって必要とするためです。

+0

'dataex'(Stataでは' ssc inst dataex'でインストール)を使用して、読み込み可能なデータの例を与えます。残念ながら、イメージはそれほど役に立ちません。 –

+0

ああ、thx ...私は私の質問を修正しました、それは今正しいですか? –

+0

それは良く見えません... tho –

答えて

1

これはあなたのために働くかもしれない:アイデアはそのように0 ==なしと-1 ==はいCA001から2を減算することであり、そのように0 ==なしの負を取る

bysort ID: egen alive_parents = total(-(ca001-2)) 
keep ID alive_parents 
duplicates drop 
list 

    +-------------------------+ 
    |  ID alive_parents | 
    |-------------------------| 
    1. | 010104101002   3 | 
    2. | 010104102002   1 | 
    3. | 010104103001   1 | 
    4. | 010104104001   1 | 
    5. | 010104105002   0 | 
    +-------------------------+ 

と1 ==はい、生きている親の総数を取得するためにIDで合計します。

次に、余分な変数を削除し、ID-alive_parentsのペアが4つずつ重複するので、重複を削除します。

+0

ありがとうございました!これはまさに私が望んでいたものです! –

+1

慎重に注意してください: 'egen、sum()'はStata 9以降では文書化されていません。この名前は 'egen、total()'の方が非難されています。なぜなら、非'egen'関数 'sum()'と混同して、累積または実行合計を生成するためです。 –

+0

Mineは 'egen、sum()'でうまくいくようです...コマンド –

関連する問題