Sum columns by group (row names) in a matrix

前端 未结 3 1836
迷失自我
迷失自我 2020-12-11 17:01

Let\'s say I have a matrix called 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), .Dimname         


        
3条回答
  •  庸人自扰
    2020-12-11 17:17

    Here's a vectorized base solution

    rowsum(df, row.names(x))
    #      Mon Tue Wed Thurs
    # Cake   2   1   1     2
    # Pie    0   0   3     3
    

    Or data.table version using keep.rownames = TRUE in order to convert your row names to a column

    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
    

提交回复
热议问题