我通过列聚合data.table,并将其设置为键,然后惊讶地发现该表仍包含重复的行。 这是什么原因?
我的表格很特别,因为我有两列具有完全相同的值(但由于实际原因必须保留两者),并且我将其中一个聚合在一起。
一个简单的例子:
y
答案 0 :(得分:1)
如果对所有列使用聚合函数,则会得到预期的结果,而不会出现重复的行:
> library(data.table)
> dat = data.table(
+ class1 = c('a', 'a', 'b'),
+ class2 = c('a', 'a', 'b'),
+ value = 1:3)
> aggr = dat[, list(class2[[1]], sum(value)), keyby = class1]
> stopifnot(!any(duplicated(aggr)))
请注意,不同之处在于我采用class2
列的第一个元素。请注意,输出一个值的任何其他函数也可以。