Stata:使用具有相同ID号的观察值替换缺失值

时间:2013-12-03 15:24:46

标签: dataset stata survey

我正在使用人口水平的美国社区调查数据来研究影响自营职业收入的因素,这些因素主要关注女性人口。我想创建一个变量来衡量“丈夫的收入”。有一个变量pincp用于衡量一个人的总收入,以及我为marriedfemale创建的虚拟变量。所有住户都通过唯一标识符serialno链接。我正在使用Stata。

宇宙:18岁及以上的人口,其主要工作是自营职业。在过去的一年中,自营职业必须至少赚1000美元,自营职业收入的第95个百分点以下。

假设一个家庭中的已婚男性代表丈夫**,

gen husb_income = pincp if female==0 & married==1

如何将husb_income的值复制到具有相同serialno的其他观察值?如果一个家庭中有(受雇)已婚男子,我希望husb_income能够反映他与该家庭有关的所有观察所得。

**我知道这是一个无偿的假设;我现在不关心。

2 个答案:

答案 0 :(得分:2)

我会选择像

这样的东西
egen husb_income = total( pincp*(female==0)*(married==1) ), by(serialno)

如果这太粗糙,您可能希望使用类似

的内容创建更详细的代码
bysort serialno (female) : gen husb_income = pincp[1] * (_N == 2) * (female==0)
只有丈夫和妻子的核心家庭。如果您不熟悉这些结构,请阅读手册和Nick Cox专栏(http://www.stata-journal.com/article.html?article=pr0004)中的相关内容。

ACS数据在家庭成员之间有详细的联系,因此您应该能够使用这些联系确切地确定丈夫是谁的女性。

答案 1 :(得分:1)

保留已婚男性的案例,删除除serialnopincp之外的所有变量。将pincp重命名为husb_income。将其另存为单独的数据集。

现在,打开原始数据集,使用merge命令将丈夫数据合并回来:

use originalData, replace
merge m:1 serialno using c:\temp\whateverTheHusbandFileIsCalled

此外,您可能在同一家庭中有超过2名已婚男性。如果发生这种情况,上述命令将无法工作,因为它将成为多对多合并。在这种情况下,您必须生成一个额外的一对指标,并将其作为merge旁边的标识符合并到serialno语句中。