2014-02-12 167 views
0

我有一個數據集,用戶每週報告一次健康症狀。用戶還可以選擇報告其家庭的其他成員。數據來自Users文件和Household文件,並通過user_id鏈接。家庭成員缺少statezip的值。我正在努力尋找一種方法來填充主要用戶報告數據中的這些缺失值。Stata:如何用羣集中的非缺失值替換缺失值?

本質上我想說:如果state變量是空的,則填充來自報告用戶的數據,其user_id變量是相同的。

我發現了一篇文章,提到了xfill命令(http://www.sealedenvelope.com/stata/xfill/),我認爲這可以解決我的需求,但是我不斷得到一個錯誤state is not constant within user_id。我沒有運氣研究這個錯誤,以確定它發生的原因。

任何人都可以解釋爲什麼xfill不起作用,或建議一種替代方法?

回答

1

想必會發生這種情況,因爲你有跨越州的用戶,而xfill只適用於靜態變量。要驗證是這種情況,請將它們標記爲:

capture ssc install egenmore 
bys user_id: egen states = nvals(state) 
edit if states>1 

這會向您顯示報告生活在多個州的用戶。

如果你有報告變量的日期,你也許能夠使用carryforward處理這個是這樣的:

bys user_id (report_date): carryforward state, gen(state2) 
+0

注意'carryforward'也必須從SSC安裝後才能使用它。一個可能有幫助的常見問題解答,只使用官方的Stata命令,在http://www.stata.com/support/faqs/data-management/replacing-missing-values/ –

+0

感謝您的幫助,我認爲這解決了它! –

+0

'mipolate,groupwise'現在是另一種方式來做到這一點。 http://www.statalist.org/forums/forum/general-stata-discussion/general/1308786-mipolate-now-available-from-ssc-new-program-for-interpolation –