如何从现有数据集中总结有用信息并将其合并为一个新数据集?

时间:2017-07-14 13:08:42

标签: stata

我试图从调查数据集中总结有用的信息。该数据集包含被调查个人父母的信息。一个身份证将关联四行,其中包含有关其母亲,父亲,岳母和岳父的信息。但是,我只对被调查者而不是他们的父母感兴趣。

* 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此数据集与其他数据集。

1 个答案:

答案 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个重复,所以我们删除重复项。