我有一个数据集X:
customer_id event_type tot_count
931 1 5
231 2 6
231 1 3
333 3 9
444 1 1
931 3 3
333 1 21
444 2 43
我需要customer_id
和event_type
级别的总和。
这是SQL中的1行代码:
select customer_id, event_type, sum(tot_count) from X group by 1,2
我需要在R中执行相同的操作。
答案 0 :(得分:5)
您可以使用aggregate
功能:
aggregate(tot_count ~ customer_id + event_type, X, sum)
customer_id event_type tot_count
1 231 1 3
2 333 1 21
3 444 1 1
4 931 1 5
5 231 2 6
6 444 2 43
7 333 3 9
8 931 3 3
答案 1 :(得分:3)
为了好玩,以下是一些选择:
因为你知道SQL,sqldf
> sqldf("select customer_id, event_type, sum(tot_count) from mydf group by 1,2")
customer_id event_type sum(tot_count)
1 231 1 3
2 231 2 6
3 333 1 21
4 333 3 9
5 444 1 1
6 444 2 43
7 931 1 5
8 931 3 3
如果您有大量数据,data.table
> library(data.table)
> DT <- data.table(mydf, key = c("customer_id", "event_type"))
> DT[, sum(tot_count), by = key(DT)]
customer_id event_type V1
1: 231 1 3
2: 231 2 6
3: 333 1 21
4: 333 3 9
5: 444 1 1
6: 444 2 43
7: 931 1 5
8: 931 3 3