2013-10-25 266 views
4

考慮以下矢量:計算平均爲位數

vec = rnorm(1000) 

我想計算該矢量的五分位數,然後平均矢量值對於每個分位。

我知道獲得位數的方式是:

qtle = quantile(vec, seq(from = 0, to = 1, by = 0.2) 

,但我不知道如何計算每個分位數內的值的平均值(即底部20%的平均值,平均接下來的20%等)以有效的方式進行。

任何想法?

謝謝。

回答

5

您可以使用findIntervaltapply

set.seed(1) 
vec = rnorm(1000) 
qs <- quantile(vec, seq(from = 0, to = 1, by = 0.2)) 
tapply(vec, findInterval(vec, qs), mean) 
#  1  2  3  4  5  6 
# -1.46746 -0.54260 -0.02399 0.54492 1.41894 3.81028 
+0

謝謝!很好的答案! – Mayou