我有一个家庭数据集,其中包括各种食品的支出。我将它们分类为主要食品类别,价格通过将支出价值除以数量得出。对于一些家庭来说,由于相应食品类别的消费量为零,因此价格为零。在这种情况下,我想要获得该价格作为相应城市的区域&省的平均价格,该省选择该非消费家庭。如何用各自的平均值代替零值答案?
我该如何使用STATA做到这一点?
我有一个家庭数据集,其中包括各种食品的支出。我将它们分类为主要食品类别,价格通过将支出价值除以数量得出。对于一些家庭来说,由于相应食品类别的消费量为零,因此价格为零。在这种情况下,我想要获得该价格作为相应城市的区域&省的平均价格,该省选择该非消费家庭。如何用各自的平均值代替零值答案?
我该如何使用STATA做到这一点?
正值的平均值是
egen mean_price = mean(price/(price > 0)), by(province district city)
,你可以在一个克隆的
gen price2 = cond(price > 0, price, mean_price)
分裂伎俩更换零可以这样解释。如果price > 0
为真,那么表达式的计算结果为1;如果为0,则清楚地表明值保持不变。除以0会产生错误,其中egen
的mean()
函数将忽略,这正是想要的。
有提到的文章中相关技术的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
。
它的工作原理。非常感谢您的快速回复。 – user2050995 2013-02-24 18:25:38