2013-10-25 153 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