假设我有一个名为的矩阵x
。
x <- structure(c(1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1),
.Dim = c(5L, 4L), .Dimnames = list(c("Cake", "Pie", "Cake", "Pie", "Pie"),
c("Mon", "Tue", "Wed", "Thurs")))
x
Mon Tue Wed Thurs
Cake 1 0 1 1
Pie 0 0 1 1
Cake 1 1 0 1
Pie 0 0 1 1
Pie 0 0 1 1
我想对按行名称分组的每一列求和:
Mon Tue Wed Thurs
Cake 2 1 1 2
Pie 0 0 3 3
我尝试使用addmargins(x)
,但这只是给我每一列和每一行的总和。有什么建议?我搜索了其他问题,但无法解决。
这是向量化的基本解决方案
rowsum(df, row.names(x))
# Mon Tue Wed Thurs
# Cake 2 1 1 2
# Pie 0 0 3 3
或data.table
使用版本keep.rownames = TRUE
来将行名转换为列
library(data.table)
as.data.table(x, keep.rownames = TRUE)[, lapply(.SD, sum), by = rn]
# rn Mon Tue Wed Thurs
# 1: Cake 2 1 1 2
# 2: Pie 0 0 3 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句