Sum columns by group (row names) in a matrix

前端 未结 3 1849
迷失自我
迷失自我 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

    You can try this

    df <- read.table(head=TRUE, text="
    Name       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")
    
    aggregate(. ~ Name, data=df, FUN=sum)
    ##   Name Mon Tue Wed Thurs
    ## 1 Cake   2   1   1     2
    ## 2  Pie   0   0   3     3
    

    also with dplyr

    library(dplyr)
    group_by(df, Name) %>%
        summarise(Mon = sum(Mon), Tue = sum(Tue), Wed = sum(Wed), Thurs = sum(Thurs))
    

    or better

     group_by(df, Name) %>%
        summarise_each(funs(sum))
    

提交回复
热议问题