【发布时间】:2017-05-29 21:46:21
【问题描述】:
我的目标是计算最终的数据框,其中包含来自多个不同数据框的平均值。给定这样的数据:
A <- c(1,2,3,4,5,6,7,8,9)
B <- c(2,2,2,3,4,5,6,7,8)
C <- c(1,1,1,1,1,1,2,2,1)
D <- c(5,5,5,5,6,6,6,7,7)
E <- c(4,4,3,5,6,7,8,9,7)
DF1 <- data.frame(A,B,C)
DF2 <- data.frame(E,D,C)
DF3 <- data.frame(A,C,E)
DF4 <- data.frame(A,D,E)
我想计算每个数据框中所有三列(每行)的平均值。为此,我组合了一个 for 循环:
All <- data.frame(matrix(ncol = 3, nrow = 9))
for(i in seq(1:ncol(DF1))){
All[,i] <- mean(c(DF1[,i], DF2[,i], DF3[,i], DF4[,i]))
}
X1 X2 X3
1 5.222222 4.277778 3.555556
2 5.222222 4.277778 3.555556
3 5.222222 4.277778 3.555556
4 5.222222 4.277778 3.555556
5 5.222222 4.277778 3.555556
6 5.222222 4.277778 3.555556
7 5.222222 4.277778 3.555556
8 5.222222 4.277778 3.555556
9 5.222222 4.277778 3.555556
但最终结果是我计算了整个列的平均值(而不是每一行的平均值)。
例如,4 个数据帧的第一行和第一列是 1,4,1,1。所以我希望最终数据帧的第一列和第一行是 1.75 (mean(c(1,4,1,1))
【问题讨论】:
-
apply(abind::abind(DF1, DF2, DF3, DF4, along = 3), 1:2, mean)