2017-07-14 30 views
1

我想從一個調查數據集中總結有用的信息。該數據集包含被調查個人父母的信息。一個ID將關聯四行,其中包含有關其母親,父親,岳母和岳父的信息。但是,我只對被調查的人感興趣,而不是他們的父母。如何彙總現有數據集中的有用信息併合併爲一個新數據集?

* 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,併爲一個觀察有一個唯一的ID。這是因爲我需要merge此數據集與其他數據集通過匹配從一個數據集的唯一ID到另一個。

+0

使用'dataex'(在Stata中,使用'ssc inst dataex'安裝)給出一個可讀的數據示例。不幸的是圖像沒有多大用處。 –

+0

哦,thx ...我修改了我的問題,現在是否正確? –

+0

它看起來不太好... tho –

回答

1

這可能會爲你工作:

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

的想法是從CA001減去2,使0 ==不和-1 ==是的,然後採取消極的,這麼0 ==不和1 ==是的,然後通過ID求和得到活着的父母的總數。

然後我們刪除額外的變量,並留下ID-alive_parents對,每個對有4個重複項,所以我們刪除重複項。

+0

非常感謝你!這正是我想要的! –

+1

請注意:'egen,sum()'在Stata 9中沒有記錄。由於與非''gen'函數'sum()'混淆的範圍,該名稱被棄用,因而會產生累積或運行總和,而不贊成使用'egen,total()'。 –

+0

我似乎對'egen,sum()'很好......只是執行了命令 –