2009-10-10 318 views
2

假設我有一個Stata數據集,它有兩個變量:typeprice。對於每個觀測type值爲1和10在Stata中考慮條件均值

之間我要添加的第三值,該值是type的所有變量的平均price一個數字。因此,例如,如果第一次觀察的type爲3,price爲10,那麼我想添加第三個值,即所有觀察值的平均值price,其中type = 3。

我如何在Stata中做到這一點?

回答

1

可能有幾種方法可以做到這一點,但這是我的建議。

gen newvar = . 
forvalues i = 1/10 { 

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

}

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 

2)生成的平均price通過type

bysort type: egen meanprice = mean(price) 

li type price meanprice, sepby(type) 
+0

創建的裝置 「根newvar =」。在forvalues循環之前缺失 – emeryville 2016-02-23 20:17:36

+0

然後,我不明白爲什麼添加了這個循環,因爲它只是重複了'meanprice'變量。我錯過了重要的事情嗎? – emeryville 2016-02-23 20:38:21

+0

@emeryville你沒有錯過任何重要的東西。最後一節至多是多餘的,最糟糕的是相當令人誤解。當我最後一次提到這個問題時,我沒有注意到自己,但我現在已經編輯了它。 – 2016-02-23 22:12:36

1

可以與

by type: egen conditional_mean = mean(price) 
+0

冗餘 - 這與Eric的答案相同。 – Keith 2012-06-13 11:27:27