我正在使用data.table對大數據集(45M行,4個int列)進行一些重複查找。如何使用data.table做多鍵查找?
這是我想要做的。
library(data.table)
# generate some data, u's can show up in multiple s's
d1 <- data.table(u=rep(1:500,2), s=round(runif(1000,1,100),0))
setkey(d1, u, s)
# for each u, I want to lookup all their s's
us <- d1[J(u=1), "s", with=F]
# for each of the s's in the above data.table,
# I want to lookup other u's from the parent data.table d1
# DOESN'T WORK:
otherus <- d1[J(s = us), "u", with=F]
# THIS WORKS but takes a really long time on my large dataset:
otherus <- merge(d1, us, by='s')
合併適用於我的目的,但自從'd1'>>>'我們',它需要很長時間。起初我想也許我正在使用從基地合併,但基於文檔它看起來像data.table合併調度是類(first_arg合併)是一個data.table。
我仍然習慣data.table J()語法。有沒有更好的方法來完成這個?
在此先感謝。
哎唷,這些名字很混亂。 「us」不應該指多個「u」,而不是多個'''與特定的'u'關聯?無論如何,這聽起來像是圖論。你在找鄰居吧?如果是這樣,你可能想看看'igraph'包。 – Frank