在R中条件的Sum列

时间:2016-12-16 23:44:17

标签: r sum aggregate

我有一个这样的数据框:

df <- data.frame(a=c(111,111,111,222,222,222,333,333,333),
                 b=c(1,0,1,1,1,1,0,0,1))
df
    a b
1 111 1
2 111 0
3 111 1
4 222 1
5 222 1
6 222 1
7 333 0
8 333 0
9 333 1

我需要获得列的总和&#39; b&#39;每个&#39; a&#39;:

    A B
1 111 2
2 222 3
3 333 1

我怎样才能以最快的方式做到这一点?

4 个答案:

答案 0 :(得分:5)

 aggregate(df$b, by=list(df$a), FUN=sum)

答案 1 :(得分:4)

一般来说,使用大数据的最快方法是使用data.table

install.packages("data.table", type = "source",
repos = "http://Rdatatable.github.io/data.table")
library("data.table")

df <- data.frame(a=c(111,111,111,222,222,222,333,333,333),
             b=c(1,0,1,1,1,1,0,0,1))
df <- as.data.table(df)
df[, sum(b), by = a]

答案 2 :(得分:1)

您可以使用dplyr:

df %>% group_by(a) %>% summarise(.,b = sum(b))

答案 3 :(得分:-1)

如果我们使用的是包dplyr,我们是否真的需要这样的代码(如其他PhilC所述):

df%&gt;%group_by(a)%&gt;%汇总(。,b = sum(b))?

这不会吗?

df%&gt;%group_by(a)%&gt;%汇总(b =总和(b))?