为Stata中的不同子组重新组合变量

为Stata中的不同子组重新组合变量,stata,data-manipulation,Stata,Data Manipulation,我有一些数据,需要对不同的子组进行一些计算,然后重新组合它们 每个分组由家庭OECD同等收入表的同等权重定义 我生成的每个新变量都遵循此名称模式: <varname><equivalentweight> 我想一定有更快的办法。我尝试了循环,我昨天刚开始编写循环,但找不到解决方案。没有仔细考虑这个问题,下面的代码相当于您的代码,如果观察结果在任何子组中都很差,则将其重新编码为差 gen poor=. recode poor .=1 if inlist(1,poor13,p

我有一些数据,需要对不同的子组进行一些计算,然后重新组合它们

每个分组由家庭OECD同等收入表的同等权重定义

我生成的每个新变量都遵循此名称模式:

<varname><equivalentweight>

我想一定有更快的办法。我尝试了循环,我昨天刚开始编写循环,但找不到解决方案。

没有仔细考虑这个问题,下面的代码相当于您的代码,如果观察结果在任何子组中都很差,则将其重新编码为差

gen poor=.
recode poor .=1 if inlist(1,poor13,poor15,poor16,poor18, ... )
recode poor .=0 if inlist(0,poor13,poor15,poor16,poor18, ... )
另一种可能满足您需求的方法是

egen poor = rowmax(poor*)

综上所述,如果我的理解是正确的,即每个家庭只有一个相等的权重,并且只属于一个分组,那么我不清楚您为达到这一点而采取的方法——创建一组新变量,其中只有一个与任何特定家庭相关——是否过于复杂

这似乎是正确的,除了任何1都会将新变量提示为1,而任何0都会再次提示它。gen POOL=inlist1、poor13、poor15、poor16、poor18可能足够了,在我看来,如果第一次重新编码设置为POOL为1,那么第二次重新编码将没有效果。换句话说,如果遇到任何1,我理解结果为1;如果没有遇到1,但遇到零,则结果为0;以及。如果全部缺失或唯一未缺失的值既不是1也不是0。我同意您的单个命令也会提供该结果,并且相信我的egen也会这样做,只要变量中只有1、0和missing值。您是对的,因为每次重新编码都只限于缺少的内容。
egen poor = rowmax(poor*)