如果我理解正确,duplicated()
函数 fordata.table
返回一个不包含第一次出现重复记录的逻辑向量。标记第一次出现的最佳方法是什么?在 的情况下base::duplicated()
,我通过反序函数的析取简单地解决了这个问题:myDups <- (duplicated(x) | duplicated(x, fromLast=TRUE))
- 但在 中data.table::duplicated()
,fromLast=TRUE
不包括(我不知道为什么)......
PS好的,这是一个原始示例
myDT <- fread(
"id,fB,fC
1, b1,c1
2, b2,c2
3, b1,c1
4, b3,c3
5, b1,c1
")
setkeyv(myDT, c('fB', 'fC'))
myDT[, fD:=duplicated(myDT)]
第 1、3 和 5 行都是重复的,但只有 3 和 5 会包含在内,duplicated
而我需要标记所有这些。
UPD。重要通知:我在下面接受的答案仅适用于键控表。如果要查找考虑所有列的重复记录,则必须setkey
显式查找所有这些列。到目前为止,我专门针对这种情况使用了以下解决方法:
dups1 <- duplicated(myDT);
dups2 <- duplicated(myDT, fromLast=T);
dups <- dups1 | dups2;