Rに大きなデータテーブルがあります:
library(data.table)
set.seed(1234)
n <- 1e+07*2
DT <- data.table(
ID=sample(1:200000, n, replace=TRUE),
Month=sample(1:12, n, replace=TRUE),
Category=sample(1:1000, n, replace=TRUE),
Qty=runif(n)*500,
key=c('ID', 'Month')
)
dim(DT)
カテゴリが列になるように、この data.table をピボットしたいと思います。残念ながら、カテゴリの数はグループ内で一定ではないため、この回答は使用できません。
これを行う方法はありますか?
/編集:joranのコメントとflodelの回答に基づいて、実際に次のように再形成していますdata.table
:
agg <- DT[, list(Qty = sum(Qty)), by = c("ID", "Month", "Category")]
この再形成はさまざまな方法で実現できます (これまでのところ、いくつかの良い答えが得られています) が、私が本当に探しているのはdata.table
、数百万の行と数百から数千のカテゴリにうまくスケーリングできるものです。