1

我有一个数据集 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_idevent_type这是 SQL 中的 1 行代码:

select customer_id, event_type, sum(tot_count) from X group by 1,2

我需要在 R 中进行相同的操作。

4

2 回答 2

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
于 2013-03-13T07:28:01.453 回答
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
于 2013-03-13T07:33:00.280 回答