The data.table
包提供速度非常快duplicated
and unique
方法用于data.table
s。它还有一个by=
参数,您可以在其中提供应计算重复/唯一结果的列。
这是一个大型 data.frame 的示例:
require(data.table)
set.seed(45L)
## use setDT(dat) if your data is a data.frame,
## to convert it to a data.table by reference
dat <- data.table(var1=sample(100, 1e7, TRUE),
var2=sample(letters, 1e7, TRUE),
var3=sample(as.numeric(sample(c(-100:100, NA), 1e7,TRUE))))
system.time(any(duplicated(dat)))
# user system elapsed
# 1.632 0.007 1.671
这需要 25 秒使用anyDuplicated.data.frame
.
# if you want to calculate based on just var1 and var2
system.time(any(duplicated(dat, by=c("var1", "var2"))))
# user system elapsed
# 0.492 0.001 0.495
这需要 7.4 秒使用anyDuplicated.data.frame
.