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