r - 对按列名分组但将所有列保留在 R 中的行值求和?

标签 r matrix group-by data-manipulation

有人问过类似的问题herehere但是,我的问题与那些问题略有不同。在其他问题中,在按组求和后,他们将删除“重复”列。我想保留重复的列。例如,如果我有一个如下所示的矩阵:

myMat <- matrix(NA, 3, 4)
colnames(myMat) <- c('x', 'y', 'x', 'y')
myMat[1,] <- c(1,2,0,1)
myMat[2,] <- c(2,4,3,5)
myMat[3,] <- c(3,6,1,7)

> myMat
     x y x y
[1,] 1 2 0 1
[2,] 2 4 3 5
[3,] 3 6 1 7

我想按行求和,按列名分组。在上面的链接中,其中一个答案暗示了这一点:

> t(rowsum(t(myMat), group = colnames(myMat), na.rm = T))
     x  y
[1,] 1  3
[2,] 5  9
[3,] 4 13

但如您所见,他们将具有相同名称的列组合在一起,结果减少了列数。我想对这些值求和,但仍然有相同的列。例如,我想要的输出如下所示:

     x  y x  y
[1,] 1  3 1  3
[2,] 5  9 5  9
[3,] 4 13 4 13

在上面,行(按名称分组)被汇总...但我仍然有每个单独的列。关于如何执行此操作有什么建议吗?

最佳答案

您可以像下面那样尝试ave(借助com + low)

> ave(myMat,colnames(myMat)[col(myMat)], row(myMat), FUN = sum)
     x  y x  y
[1,] 1  3 1  3
[2,] 5  9 5  9
[3,] 4 13 4 13

关于r - 对按列名分组但将所有列保留在 R 中的行值求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73501618/

相关文章:

r - 相关矩阵 - tidyrgather v.reshape2melt

mysql - 查询中的 Count、SUM、LEFT JOIN 和 GROUP BY 无法正常工作

SQL 条件 GROUP BY : how to do it?

ruby-on-rails - 按组划分的平均值

r - 在 R 中快速执行多次连接

r - R中使用parallelSVM的makeCluster占用所有内存和交换

python - 在 CVXPY 中对变量矩阵的部分转置设置约束

r - 将 data.frame 列更改为 R 中的行

r - 单击 "Run the current line or selection"时停止执行

c++ - 优化 c++ 矩阵/位图类