R data.table使用键带! (不)效率

时间:2017-12-03 13:49:35

标签: r data.table key

我打赌这有一个简单的答案,但是当你想要一个不等于特定值的值时,是否有更好的方法来使用R data.table键?

在下面的代码示例中,我希望值不等于205,您可以看到使用!需要3倍的时间,即使它们返回相同的行数。在这个简单的示例中,您可以将其设置为100或执行fsetdiff()或其他内容,但想象一个包含大量ID值的非常大的表。

N = 2e7L
DT = data.table(id = sample(c(100L, 205L), N, TRUE),
   loan_age = sample(0:500, N, TRUE),
   val = runif(N))

setkey(DT, id)
system.time(DT[.(205L)])  #0.108
system.time(DT[!.(205L)]) #0.396

0 个答案:

没有答案