刚遇到一个问题,就是分组求和在R里怎么实现比较简便?
对应SQL语句为:SELECT customer, sum(consumption) FROM consume group by customer
然后就是类似的,分组计数怎么做?
a=data.frame(customer=c('a','b','a','m','a','b'),consumption=1:6) a customer consumption 1 a 1 2 b 2 3 a 3 4 m 4 5 a 5 6 b 6 tapply(a$consumption,a$customer,sum) a b m 9 8 4 tapply(a$consumption,a$customer,length) a b m 3 2 1
在搞复杂点。
a=data.frame(customer=c('a','b','a','m','a','b'),consumption=1:6,groups=c('A','B','A','B','A','B')) aggregate(a$consumption, list(a$customer,a$groups), sum) Group.1 Group.2 x 1 a A 9 2 b B 8 3 m B 4 library(data.table) consume<-data.table(consume) setkey(consume,customer) a1<-consume[,sum(consumption),customer]