대용량 데이터 집합 (45M 행, 4 개의 int 열)에서 반복적 인 조회를 수행하기 위해 data.table을 사용하고 있습니다.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처럼 보입니다. 병합은 class (first_arg 병합)가 data.table입니다.
아직 data.table J() 구문에 익숙해 져 있습니다. 이것을 성취하기위한 더 좋은 방법이 있습니까?
미리 감사드립니다.
오히려 그 이름은 혼란 스럽습니다. '우리'가 여러 개의 'u'를 말하는 것이 아니라 여러 개의 's'가 paticular 'u'와 관련이있는 것이 아닌가? 어쨌든, 이것은 저에게 그래프 이론처럼 들립니다. 이웃을 찾는 거지? 그렇다면,'igraph' 패키지를 살펴 보는 것이 좋습니다. 감사합니다. @Georg. – Frank