R 如何对数据帧进行分段平均?

R 如何对数据帧进行分段平均?,r,R,我有一个只有一列的数据框。我想取前两个数字的平均值,然后取下两个数字的平均值,依此类推 Example_data_frame 1 2 3 4 5 6 7 8 Resulting_data_frame 1.5 3.5 5.5 7.5 我想取平均数。因此,结果与您在生成的“数据”帧中看到的结果类似,这是一种可能的矢量化方法 colMeans(matrix(df1$v1, nrow = 2)) ## [1] 1

我有一个只有一列的数据框。我想取前两个数字的平均值,然后取下两个数字的平均值,依此类推

Example_data_frame
    1
    2
    3
    4
    5
    6
    7
    8

Resulting_data_frame
   1.5
   3.5
   5.5
   7.5

我想取平均数。因此,结果与您在生成的“数据”帧中看到的结果类似,这是一种可能的矢量化方法

colMeans(matrix(df1$v1, nrow = 2))
## [1] 1.5 3.5 5.5 7.5
现在删除了一些针对tapply的基准测试

set.seed(123)
df1 <- data.frame(v1 = sample(1e6))

system.time(with(df1, tapply(v1, as.numeric(gl(nrow(df1), 2, nrow(df1))), FUN = mean)))
# user  system elapsed 
# 11.28    0.03   11.73

system.time(colMeans(matrix(df1$v1, nrow = 2)))
# user  system elapsed 
# 0.01    0.00    0.01 

这里有一种可能的矢量化方法

colMeans(matrix(df1$v1, nrow = 2))
## [1] 1.5 3.5 5.5 7.5
现在删除了一些针对tapply的基准测试

set.seed(123)
df1 <- data.frame(v1 = sample(1e6))

system.time(with(df1, tapply(v1, as.numeric(gl(nrow(df1), 2, nrow(df1))), FUN = mean)))
# user  system elapsed 
# 11.28    0.03   11.73

system.time(colMeans(matrix(df1$v1, nrow = 2)))
# user  system elapsed 
# 0.01    0.00    0.01