2013-02-24 119 views
1

我有一个家庭数据集,其中包括各种食品的支出。我将它们分类为主要食品类别,价格通过将支出价值除以数量得出。对于一些家庭来说,由于相应食品类别的消费量为零,因此价格为零。在这种情况下,我想要获得该价格作为相应城市的区域&省的平均价格,该省选择该非消费家庭。如何用各自的平均值代替零值答案?

我该如何使用STATA做到这一点?

回答

1

正值的平均值是

egen mean_price = mean(price/(price > 0)), by(province district city) 

,你可以在一个克隆的

gen price2 = cond(price > 0, price, mean_price) 

分裂伎俩更换零可以这样解释。如果price > 0为真,那么表达式的计算结果为1;如果为0,则清楚地表明值保持不变。除以0会产生错误,其中egenmean()函数将忽略,这正是想要的。

有提到的文章中相关技术的http://www.stata-journal.com/article.html?article=dm0055

附:更多的讨论Stata是正确的拼写。这是一个发明的词,并不是一个缩写词。

P.S.您还没有承认在How to get the difference of two variables, when there are missing values?

更高版本的答案:

在这种情况下,另一种方式是

egen total = total(price), by(province district city) 
    egen number = total(price > 0), by(province district city) 
    gen price2 = cond(price > 0, price, total/number) 

零价格使总没有什么区别。始终使用double

+0

它的工作原理。非常感谢您的快速回复。 – user2050995 2013-02-24 18:25:38