如何在r中一个接一个地聚合数据?

How to aggregate data one after another in r?

假设我有如下每小时(总共 6 小时)的波高数据。我使用 mean 函数

将它们汇总为 2 小时和 3 小时的高度
h_1<-c(2, 4, 6, 7, 9, 11)

这是我使用的函数:

 agg_direct<-function(x){
      
      y<-as.data.frame(x)
      names(y)<-c("wh")
      agg<-lapply(c(1, 2, 3),  function(x) 
        tapply(y$wh, as.integer(gl(nrow(y), x, nrow(y)) ), FUN = mean))
    }
out<-agg_direct(h_1)

这个的输出:

    $h_1
 1  2  3  4  5  6 
 2  4  6  7  9 11 

$h_2
   1    2    3 
 3.0  6.5 10.0 

$h_3
1 2 
4 9

但这正是我想要的:

For 2-h, mean of (2,4), (4,6), (6,7), (7,9), (9,11)
For 3-h, mean of (2,4,6), (4,6,7), (6,7,9), (7,9,11)

所以输出将是这样的:

For 2-h: 3, 5, 6.5, 8, 10
For 3-h: 4, 5.66, 7.33, 9

这个过程将在 4 小时、5 小时后执行...

我们可以使用 rollmean 来自 zoo

library(zoo)
rollmean(h_1, 2)
#[1]  3.0  5.0  6.5  8.0 10.0
rollmean(h_1, 3)
#[1] 4.000000 5.666667 7.333333 9.000000