2017-02-24 31 views
0

我有數據需要爲不同的子組做一些計算然後重新組合它們。在Stata中爲不同的子組重新組合變量

每個小組由家庭當量(經濟合作與發展組織等效收入標準)定義。

每一個新的變量我產生如下這個名字模式:

<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 ... 

我想一定有一個更快的方法。我試過循環(我昨天剛剛開始編碼循環),但找不到解決方案。

回答

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*) 

與所有的說,如果我的理解是正確的,每個家庭只有一個當量,屬於剛羣,它不是我清楚地知道,爲了達到這一點,你所採取的方法 - 創造一套新的變量,其中只有一個變量與任何特定的家庭有關 - 並不是過分複雜。

+0

這似乎沿着正確的路線,除了任何1提示新變量爲1和任何0提示它回來。 '窮人= inlist(1,poor13,poor15,poor16,poor18)'可能就夠了, –

+0

在我看來,如果第一次重新編碼設置爲1,那麼第二次重新編碼將不起作用。換言之,我知道如果遇到任何1,結果爲1,如果遇到1,但遇到0,則結果爲0。如果全部丟失(或者唯一的非丟失值不是1或0)。我同意你的單一命令也會提供這個結果,並且相信我的egen也會做類似的事情,只要1,0和缺失是變量中唯一的值。 – 2017-02-24 21:36:49

+0

你是對的,因爲每個「recode」只限於缺少的東西。 –