2

这实际上是一个简单的问题,但是我自己无法弄清楚解决方案。

我有一个长度为 100 的向量。现在我想计算每五个元素的平均值。

例如,前五个元素的一个平均值,接下来的五个观察值的第二个平均值,依此类推。

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

4

2 回答 2

3

怎么样:

> x <- 1:100
> tapply(x, rep(1:(length(x)/5), each = 5), mean)
 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 
 3  8 13 18 23 28 33 38 43 48 53 58 63 68 73 78 83 88 93 98 

坚持rep,但试图满足@Ferdinand.kraft,有一个不太漂亮但仍然非常易于阅读的解决方案:

tapply(x, rep(1:ceiling(length(x)/5), each = 5, length.out = length(x)), mean)
于 2013-08-25T22:30:23.563 回答
2

用这个:

aggregate(x, by=list(0:(length(x)-1) %/% 5), mean)
于 2013-08-25T22:28:38.670 回答