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 に答える