所以我目前有 3 个数据帧,需要对每个单元格进行平均,但我不知道如何执行此操作...本质上,我需要获得 df1 的第 1 列中第一个观察值的平均值、df2、df3 等等,对于每个单独的观察。
这是一个可重现的示例数据。
set.seed(789)
df1 <- data.frame(
a = runif(100, 0, 100),
b = runif(100, 0, 100),
c = runif(100, 0, 100),
d = runif(100, 0, 100))
df2 <- data.frame(
a = runif(100, 0, 100),
b = runif(100, 0, 100),
c = runif(100, 0, 100),
d = runif(100, 0, 100))
df3 <- data.frame(
a = runif(100, 0, 100),
b = runif(100, 0, 100),
c = runif(100, 0, 100),
d = runif(100, 0, 100))
我需要创建尺寸为 100 x 4 的第四个数据帧,它是前三个数据帧中每个单元格的平均结果。任何想法都将受到高度赞赏!
最佳答案
我们可以通过 Reduce
和 +
来完成此操作,然后除以 列表
中的数据集数量。这可以灵活地将“n”个数据集保留在列表
dfAvg <- Reduce(`+`, mget(paste0("df", 1:3)))/3
或者另一种选择是转换为数组
,然后使用apply
,它也可以选择删除缺失值(na.rm=TRUE
)
apply(array(unlist(mget(paste0("df", 1:3))), c(dim(df1), 3)), 2, rowMeans, na.rm = TRUE)
正如 @user20650 提到的,rowMeans
可以通过 dim
直接应用于 array
rowMeans(array(unlist(mget(paste0("df", 1:3))), c(dim(df1), 3)), dims=2)
关于r - 两个或多个数据帧的平均单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43309401/