这实际上是一个简单的问题,但是我自己无法弄清楚解决方案。
我有一个长度为 100 的向量。现在我想计算每五个元素的平均值。
例如,前五个元素的一个平均值,接下来的五个观察值的第二个平均值,依此类推。
我怎样才能在 R 中做到这一点?
怎么样:
> 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)
用这个:
aggregate(x, by=list(0:(length(x)-1) %/% 5), mean)