r - 两个或多个数据帧的平均单元格

标签 r

所以我目前有 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/

相关文章:

r - 使自定义函数可通过管道传输

windows - 在 Windows R 中设置主目录

r - 添加 UI 元素的一部分作为 introjs() 教程的步骤

r - 在 debian 机器中使用 roll_lm 时出错

r - 导出到 csv,同时保留 R 中 ".0"中表示的整数的数字

r - 如果存在于 =.>3 个数据框中(共 5 个),如何删除公共(public)元素

mysql - R:RMariaDB 不适用于 3.4.0 - 如何从 R v 3.4.0 连接到 MySQL?

r - ggplot2 和 map : geom_point and annotation_raster position mismatch

r - vapply 中的错误...值的长度必须为 1,但 FUN(X[[11]]) 结果长度为 0

r - 如何根据列名将函数应用于特定列?