2016-04-07 23 views
2

İki data.tables var. Bir diğerideki olayları saymak için anahtarları bir arada kullanmak istiyorum.R data.table varsayılan dış birleştirme setkey ile, satır sayma

DT1 <- data.table(A =c("v1","v2","v1","v2","v3","v4","v5","v6","v1","v2"),B=c(1,11,111,2,22,222,3,33,333,4)) 
DT2 <-data.table(C=c("v1","v3","v99")) 


setkey(DT1,A) 
setkey(DT2,C) 

DT1'deki satırları bulmak için DT2 kullanın, bir dış birleştirmeyi döndürür.

nrow(DT1[DT2,]) #returns 5 (v1*3, v3*1, v99) "v99" not in DT2 
DT1[DT2,] 

    A B 
1: v1 1 
2: v1 111 
3: v1 333 
4: v3 22 
5: v99 NA 

Aynı sözdizimiyle sola katılmaya zorlanabilir mi?

+0

'DT1 [DT2, nomatch = 0L] '? – mtoto

+1

Aslında bu * bir sol birleştirildi ... bir dış birleşim birleştirme olur (DT1, DT2, by.x = "A", by.y = "C", hepsi = TRUE) '. Ve 'v99' * *, DT2'de –

+0

’da bulunur. – iboboboru

cevap

6

Bir diğerideki örnekleri saymak için anahtarları bir arada kullanmak istiyorum.

DT1[DT2, .N, on=c(A="C"), by=.EACHI] 

    A N 
1: v1 3 
2: v3 1 
3: v99 0 
İlgili konular