【发布时间】:2023-04-11 09:48:01
【问题描述】:
我在 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,这样 Category 就变成了一个列。不幸的是,由于组内类别的数量不是恒定的,我不能使用this answer。
任何想法我可以如何做到这一点?
/edit:根据 joran 的 cmets 和 flodel 的回答,我们真的在重塑以下 data.table:
agg <- DT[, list(Qty = sum(Qty)), by = c("ID", "Month", "Category")]
这种重塑可以通过多种方式完成(到目前为止,我已经得到了一些很好的答案),但我真正想要的是能够很好地扩展到具有数百万行和数百行的 data.table 的东西数以千计的类别。
【问题讨论】:
-
您的意思是用
Qty填充表格的主体吗?总结任何重复的组合? -
@joran:在我的示例中,有重复的组合,但为了论证,我们假设没有。我想要的是 Category 字段的每个值都有一个不同的列,NA 或 0 表示缺失的组合。
-
@joran 我认为您的问题的正确答案是肯定的:我希望 Category 成为一列,每列中有 Qty,缺少类别的 NA 或 0,重复项应该相加(但它是在我们重塑之前进行求和是公平的)。
标签: r data.table