我有一个包含一列的数据框。我想比前两个数字取平均前两个数字,依此类推。
Example_data_frame
1
2
3
4
5
6
7
8
Resulting_data_frame
1.5
3.5
5.5
7.5
我想取平均值。因此结果类似于您在Resulting_data_frame
中看到的结果答案 0 :(得分:4)
这是一种可能的矢量化方法
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