我试图从调查数据集中总结有用的信息。该数据集包含被调查个人父母的信息。一个身份证将关联四行,其中包含有关其母亲,父亲,岳母和岳父的信息。但是,我只对被调查者而不是他们的父母感兴趣。
* 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。这是因为我需要通过将一个数据集中的唯一ID与另一个数据集匹配来merge
此数据集与其他数据集。
答案 0 :(得分: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个重复,所以我们删除重复项。