key를 사용한 데이터 테이블 병합
key는 여러 데이터 테이블의 병합에도 사용할 수 있다. 예를 들어, DT1, DT2 두 데이터 테이블이 있을 때 DT1[DT2, 표현식]은 DT1에서 DT2에 대응하는 데이터를 찾는 방식으로 데이터를 병합한다. 다음 표를 참고하기 바란다.
문법 |
의미 |
DT1[DT2, 표현식] |
DT1에서 DT2에 해당하는 행들을 찾고 ‘표현식’에 지정한 계산을 수행한다. |
DT2[DT1, 표현식] |
DT2에서 DT1에 해당하는 행들을 찾고 ‘표현식’에 지정한 계산을 수행한다. |
다음 두 데이터 테이블을 가정해보자.
> DT1 <- data.table(x=runif(260000), + y=rep(LETTERS, each=10000)) # LETTERS는 A~Z가 저장된 문자열 벡터 > DT2 <- data.table(y=c("A", "B", "C"), z=c("a", "b", "c"))
DT1[DT2, ]는 DT1으로부터 y 값이 A, B, C인 행을 찾아 병합한다.
> setkey(DT1, y) # DT1에서의 검색을 빠르게 하기 위한 색인 생성 > DT1[DT2, ] y x z 1: A 0.36912925 a 2: A 0.60170742 a 3: A 0.16972871 a 4: A 0.27251097 a 5: A 0.96946385 a --- 29996: C 0.66247989 c 29997: C 0.69217630 c 29998: C 0.02152985 c 29999: C 0.60682416 c 30000: C 0.07117150 c