2016-04-07 11 views
2

私は2 data.tablesを持っているのカウント、にsetkeyで参加します。私は1つのキーを使用して、別のキーの中の出現を数えたいと思う。R data.tableデフォルトの外側には、行

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の行を見つけるためにDT2を使用すると、外部結合が返されます。

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 

同じ構文で強制的に左結合することはできますか?

+0

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

+1

は実際に、これは*左ジョイン*です...外部結合(DT1、DT2を、by.x = "A"、by.y = "C"、すべて= TRUE)マージ 'あろう。そして 'v99'は*私はのために検索したまさに*' DT2' –

+0

感謝のmtotoに存在しています。 – iboboboru

答えて

6

あるキーを使用して別のキーで発生をカウントしたいと考えています。

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

    A N 
1: v1 3 
2: v3 1 
3: v99 0