我有数据,我需要为不同的子组做一些计算,然后重新组合它们。
每个小组由家庭的当量(经合组织当量收入等级)定义。
我生成的每个新变量都遵循这个名称模式:
<varname><equivalentweight>
因此,收入的变量除以等效权重1.3
income13
。
在不同子组中进行计算后,我想重新组合结果。
在这个例子中,我计算了每个亚组不同的贫困阈值,现在可以说这个小组中哪些人是穷人。现在我想要一个结合这些结果的变量,并显示人口中的穷人。
我知道如何做到这一点:
gen poor=.
recode poor .=1 if poor13==1 | poor15==1 | poor16==1 | poor18==1 ...
recode poor .=0 if poor13==0 | poor15==0 | poor16==0 | poor18==0 ...
我想必须有更快的方法。我尝试使用循环(我昨天刚刚开始编码循环),但无法找到解决方案。
答案 0 :(得分:1)
如果不考虑这个问题,以下内容相当于您的代码,如果在任何子组中都很差,则会将观察结果重新编写为差。
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*)
尽管如此,如果我的理解是正确的,每个家庭只有一个等效的权重,并且只属于小组,我不清楚你采取的方法到达这一点 - 创建一组新变量只有一个与任何特定家庭相关 - 并不过分复杂。