r - 组合矩阵的列并替换为均值

标签 r matrix summarize

我有一个包含许多列的矩阵,需要单独组合。我想将它们组合起来并获取各行的平均值,然后将它们放入一个新的矩阵中。 TYIA

我有一个名为数据的矩阵,如下所示:

    p7.1    p7.2    p7.3    p8.1   p8.2    p9.1   p9.2
1    0      1       0       4      5       2      1
2    15     6        2       3      4       10    1
3     1     2        4       5      1       0      2

这是我想要的结果:所有“p7”应该在一列中,其中包含所有 sep 的行的平均值。 p7 值。

      p7            p8          p9
1     .5            4.5         1.5
2     11.5          3.5         5.5
3     3.5           3            1

我可以通过将 p7、p8、p9 保存到不同的变量来执行此操作,如下所示: p7 <- 应用(数据[,1:3], 1, 平均值) ETC。 然而,我正在努力寻找一种更简洁的方法来做到这一点。也许是一个 for 循环,但我没能成功地做到这一点。

最佳答案

我们可以尝试下面的代码

do.call(
  cbind,
  Map(rowMeans, split.default(df, gsub("\\..*", "", names(df))))
)

我们将得到

         p7  p8  p9
1 0.3333333 4.5 1.5
2 7.6666667 3.5 5.5
3 2.3333333 3.0 1.0

数据

> dput(df)
structure(list(p7.1 = c(0L, 15L, 1L), p7.2 = c(1L, 6L, 2L), p7.3 = c(0L, 
2L, 4L), p8.1 = c(4L, 3L, 5L), p8.2 = c(5L, 4L, 1L), p9.1 = c(2L,
10L, 0L), p9.2 = c(1L, 1L, 2L)), class = "data.frame", row.names = c("1",
"2", "3"))

关于r - 组合矩阵的列并替换为均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71344236/

相关文章:

反向地理编码速度

r - R在哪里存储临时文件

r - 使用 lapply 在矩阵列表的上三角中创建 0

r - 验证 R 中矩阵之间的行名和列名是否相同

scripting - 是否有可用于调整 SVG 大小的脚本?

r - 类别数不等于特定类别数

python - 在 Python 中创建阈值编码的 ROC 图

r - R中的聚合来计算各组总数的百分比?

r - 如何将重复行的值合并为一行

r - R中的vi输入模式?