计算R中每批n行的列的平均值

时间:2015-02-13 19:47:53

标签: r

假设我有这样的数据框...

> 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。我在下面发布了一个答案,但这是一个常见的事情,那么有更简单的方法吗?

2 个答案:

答案 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)