2013-03-02 4 views
13

data.table FAQ में, nomatch = NA पैरामीटर को बाहरी शामिल होने के समान कहा जाता है। हालांकि, मैं पूर्ण बाहरी शामिल होने के लिए data.table प्राप्त करने में सक्षम नहीं हूं - केवल सही बाहरी जुड़ता है।डेटाटेबल का उपयोग कर एक पूर्ण जुड़ाव कैसे करता है?

उदाहरण के लिए:

a <- data.table("dog" = c(8:12), "cat" = c(15:19)) 

    dog cat 
1: 8 15 
2: 9 16 
3: 10 17 
4: 11 18 
5: 12 19 

b <- data.table("dog" = 1:10, "bullfrog" = 11:20) 

    dog bullfrog 
1: 1  11 
2: 2  12 
3: 3  13 
4: 4  14 
5: 5  15 
6: 6  16 
7: 7  17 
8: 8  18 
9: 9  19 
10: 10  20 

setkey(a, dog) 
setkey(b, dog) 

a[b, nomatch = NA] 

    dog cat bullfrog 
1: 1 NA  11 
2: 2 NA  12 
3: 3 NA  13 
4: 4 NA  14 
5: 5 NA  15 
6: 6 NA  16 
7: 7 NA  17 
8: 8 15  18 
9: 9 16  19 
10: 10 17  20 

तो, nomatch = NA एक सही बाहरी में शामिल होने के लिए (जो डिफ़ॉल्ट है) पैदा करता है। अगर मुझे पूर्ण जुड़ाव की ज़रूरत है तो क्या होगा? उदाहरण के लिए:

merge(a, b, by = "dog", all = TRUE) 
# Or with plyr: 
join(a, b, by = "dog", type = "full") 

    dog cat bullfrog 
1: 1 NA  11 
2: 2 NA  12 
3: 3 NA  13 
4: 4 NA  14 
5: 5 NA  15 
6: 6 NA  16 
7: 7 NA  17 
8: 8 15  18 
9: 9 16  19 
10: 10 17  20 
11: 11 18  NA 
12: 12 19  NA 

क्या यह data.table के साथ संभव है?

+0

मिलती लिए data.table साथ की [इस पोस्ट] पिछले जवाब [1 देखें ] [1]: http://stackoverflow.com/questions/14076065/data-table-inner-outer-join-with-na-in-join-column-of-type-double-bug आरक = 1 – statquant

+0

सभी प्रकार की data.table साथ जुड़ जाता है के लिए की [इस पोस्ट] पिछले जवाब देखने [1] [1]: http://stackoverflow.com/questions/14076065/data-table-inner-outer -जॉइन-साथ-ना-इन-इन-कॉलम-ऑफ-टाइप-डबल-बग? rq = 1 – statquant

उत्तर

19

आपके पास वास्तव में यह है। का प्रयोग करें merge.data.table जो है कि वास्तव में आप क्या कर रहे हैं जब आप कॉल

merge(a, b, by = "dog", all = TRUE) 

a के बाद से एक data.table है, merge(a, b, ...) कॉल merge.data.table(a, b, ...)

+0

आह, ज़ाहिर है। मुझे यह पता होना चाहिए था। धन्यवाद। –

0
x= data.table(a=1:5,b=11:15) 
y= data.table(a=c(1:4,6),c=c(101:104,106)) 

setkey(x,a) 
setkey(y,a) 

unique_keys <- unique(c(x[,a], y[,a])) 
y[x[.(unique_keys), on="a"] ] # Full Outer Join 
संबंधित मुद्दे