【发布时间】:2015-12-17 12:17:19
【问题描述】:
我按列聚合了一个 data.table,并将其设置为键,然后惊讶地发现该表仍然包含重复的行。 这是什么原因?
我的表格很特别,因为我有两列具有完全相同的值(但出于实际原因必须保留这两列),并且我通过其中一个汇总了表格。
一个简单的例子:
> library(data.table)
> dat = data.table(
+ class1 = c('a', 'a', 'b'),
+ class2 = c('a', 'a', 'b'),
+ value = 1:3)
> aggr = dat[, list(class2, sum(value)), keyby = class1]
> stopifnot(!any(duplicated(aggr)))
Error: !any(duplicated(aggr)) is not TRUE
【问题讨论】:
-
您可能需要
dat[, list(unique(class2), sum(value)), keyby = class1]或使用class1和class2作为分组变量。dat[, list(sum(value)), .(class1, class2)] -
执行
dat[, print(.SD), by=class1]以了解每个组中包含哪些数据。当您在分组中引用变量时,会提取此 data.table 中的列。
标签: r data.table