मैं दो डेटाफ्रेम में शामिल होना चाहता हूं, जहां NA
एस दोनों तरफ शामिल कॉलम में हो सकता है (यानी code
कॉलम)dplyr का उपयोग करके NA/NULL उपचार में अंतर :: left_join (आर लैंग) बनाम एसक्यूएल बाएं जॉइन
a <- data.frame(code=c(1,2,NA))
b <- data.frame(code=c(1,2,NA, NA), name=LETTERS[1:4])
dplyr
का उपयोग करना, हम पाते हैं:
left_join(a, b, by="code")
code name
1 1 A
2 2 B
3 NA C
4 NA D
एसक्यूएल का उपयोग करना, हम पाते हैं:
CREATE TABLE a (code INT);
INSERT INTO a VALUES (1),(2),(NULL);
CREATE TABLE b (code INT, name VARCHAR);
INSERT INTO b VALUES (1, 'A'),(2, 'B'),(NULL, 'C'), (NULL, 'D');
SELECT * FROM a LEFT JOIN b USING (code);
ऐसा लगता है कि dplyr
मिलती एसक्यूएल NULL
मूल्यों की तरह NA
रों का इलाज नहीं है।
- वहाँ एक रास्ता
dplyr
एसक्यूएल रूप में एक ही तरह से व्यवहार करने के लिए है? - इस प्रकार के एनए उपचार के पीछे तर्क क्या है?
पीएस। बेशक, मैं वहां left_join(a, na.omit(b), by="code")
प्राप्त करने के लिए पहले एनएएस को हटा सकता था, लेकिन यह मेरा सवाल नहीं है।