假设我有这样的数据框...
> head(x)
round value
1 1 0.37207016
2 2 0.51954917
3 3 -0.70684976
4 4 0.76105557
5 5 0.09252876
6 6 -2.42223178
> tail(x)
round value
95 95 -0.6799075
96 96 -0.4109732
97 97 0.9740048
98 98 -0.8877499
99 99 0.1501041
100 100 -0.5415825
...我想在每10轮间隔得到平均值value
。我在下面发布了一个答案,但这是一个常见的事情,那么有更简单的方法吗?
答案 0 :(得分:1)
我可以做一些体操来创建一个数据框,其中包含“批量”索引的额外列,然后将其分组以计算平均值。
> y <- data.frame(x$round, x$value, rep(1:10, each=10))
> colnames(y) <- c("round","value", "batch")
> head(y)
round value batch
1 1 0.37207016 1
2 2 0.51954917 1
3 3 -0.70684976 1
4 4 0.76105557 1
5 5 0.09252876 1
6 6 -2.42223178 1
> tail(y)
round value batch
95 95 -0.6799075 10
96 96 -0.4109732 10
97 97 0.9740048 10
98 98 -0.8877499 10
99 99 0.1501041 10
100 100 -0.5415825 10
> tapply(y$value, y$batch, mean)
1 2 3 4 5 6
-0.13784753 -0.15969468 0.41346173 0.09019686 -0.26467052 -0.29677632
7 8 9 10
0.06489254 0.17609739 0.35029525 -0.19669901
答案 1 :(得分:0)
尝试使用模数除法。需要减去1才能获得第一组10的大小:
tapply(y$yvalue, (nrow(x)-1) %/% 10, mean)