2

假设我有一个包含两个变量的 Stata 数据集:typeprice. 每个type观察值是一个介于 1 和 10 之间的数字。

我想添加第三个值,即price所有变量的平均值type。因此,例如,如果第一个观察值的 atype为 3,aprice为 10,那么我想添加第三个值,它是= 3price的所有观察值的平均值。type

我怎样才能在Stata中做到这一点?

4

3 回答 3

6

这是一种更简单有效的不同方法。如果您有一个大型数据集,这将比 aTron 建议的多步循环更快,并且这种方法可以适应您的“类型”变量范围的变化(如果您的数据集大小发生变化,您不必返回您的代码并更改forvalues命令中的范围)。

1)创建一个假数据集

clear
input type price
1 1000
2 3200
3 5000
4 1200
5 1000
1 4000
2 2000
3 4000
4 1200
5 2000
end

price2 )生成平均值type

bysort type: egen meanprice = mean(price)

li type price meanprice, sepby(type) 
于 2009-10-20T03:06:41.393 回答
1

可能有几种方法可以做到这一点,但这是我的建议。

gen newvar = .
forvalues i = 1/10 {

  qui sum price if type == `i', meanonly
  replace newvar = r(mean) if type == `i'

}

于 2009-10-10T21:30:54.170 回答
1

您可以使用

by type: egen conditional_mean = mean(price)
于 2011-03-25T01:48:18.100 回答