我有一个家庭数据集,其中包括各种食物的支出。我将它们分为主要的食物组,价格是用支出值除以数量得出的。对于一些家庭来说,价格为零,因为他们对相应食品组的消费为零。在这种情况下,我想将价格作为选择该非消费家庭的相应市、区和省的平均价格。
我怎么能用 STATA 做到这一点?
我有一个家庭数据集,其中包括各种食物的支出。我将它们分为主要的食物组,价格是用支出值除以数量得出的。对于一些家庭来说,价格为零,因为他们对相应食品组的消费为零。在这种情况下,我想将价格作为选择该非消费家庭的相应市、区和省的平均价格。
我怎么能用 STATA 做到这一点?
正值的平均值是
egen mean_price = mean(price / (price > 0)), by(province district city)
您可以通过以下方式替换克隆中的零
gen price2 = cond(price > 0, price, mean_price)
除法技巧可以这样解释。如果price > 0
为真,则该表达式的值为 1;如果 false 为 0。除以 1 显然会使值保持不变。除以 0 会产生缺失,它egen
的mean()
函数将忽略,这正是我们想要的。
在http://www.stata-journal.com/article.html?article=dm0055引用的文章中有更多的相关技术讨论
PS Stata 是正确的拼写。这是一个发明词,从来都不是首字母缩略词。
PS您还没有在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
始终使用s。