我有一个这样的数据框:
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
我怎样才能以最快的方式做到这一点?
答案 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))?