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