假设我有一个包含两个变量的 Stata 数据集:type
和price
. 每个type
观察值是一个介于 1 和 10 之间的数字。
我想添加第三个值,即price
所有变量的平均值type
。因此,例如,如果第一个观察值的 atype
为 3,aprice
为 10,那么我想添加第三个值,它是= 3price
的所有观察值的平均值。type
我怎样才能在Stata中做到这一点?
假设我有一个包含两个变量的 Stata 数据集:type
和price
. 每个type
观察值是一个介于 1 和 10 之间的数字。
我想添加第三个值,即price
所有变量的平均值type
。因此,例如,如果第一个观察值的 atype
为 3,aprice
为 10,那么我想添加第三个值,它是= 3price
的所有观察值的平均值。type
我怎样才能在Stata中做到这一点?
这是一种更简单有效的不同方法。如果您有一个大型数据集,这将比 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
price
2 )生成平均值type
bysort type: egen meanprice = mean(price)
li type price meanprice, sepby(type)
可能有几种方法可以做到这一点,但这是我的建议。
gen newvar = .
forvalues i = 1/10 {
qui sum price if type == `i', meanonly
replace newvar = r(mean) if type == `i'
}
您可以使用
by type: egen conditional_mean = mean(price)