मेरे पास दो डेटा फ़्रेम हैं जिन्हें मैं dplyr का उपयोग करके शामिल करना चाहता हूं। एक एक डेटा फ्रेम है जिसमें पहले नाम हैं।
test_data <- data.frame(first_name = c("john", "bill", "madison", "abby", "zzz"),
stringsAsFactors = FALSE)
अन्य डेटा फ़्रेम में लिंग की पहचान करने वाले कॉन्ट्रोविज़ नाम कॉर्पस का साफ किया गया संस्करण है। यहाँ एक न्यूनतम उदाहरण है:
kantrowitz <- structure(list(name = c("john", "bill", "madison", "abby", "thomas"), gender = c("M", "either", "M", "either", "M")), .Names = c("name", "gender"), row.names = c(NA, 5L), class = c("tbl_df", "tbl", "data.frame"))
मैं अनिवार्य रूप से test_data
तालिका का उपयोग करके तालिका से नाम का लिंग देखना चाहता हूं kantrowitz
। क्योंकि मैं इसे एक फ़ंक्शन में सार करने जा रहा हूं, इसलिए मुझे encode_gender
उस डेटा सेट में कॉलम का नाम नहीं पता होगा जिसका उपयोग होने जा रहा है, और इसलिए मैं गारंटी नहीं दे सकता कि यह होगा name
, जैसा कि अंदर होगा kantrowitz$name
।
बेस में RI इस तरह मर्ज करेगा:
merge(test_data, kantrowitz, by.x = "first_names", by.y = "name", all.x = TRUE)
यह सही आउटपुट देता है:
first_name gender
1 abby either
2 bill either
3 john M
4 madison M
5 zzz <NA>
लेकिन मैं यह पूरी तरह से करना चाहता हूं क्योंकि मैं अपने सभी अन्य डेटा हेरफेर के लिए उस पैकेज का उपयोग कर रहा हूं। by
विभिन्न *_join
कार्यों के लिए dplyr विकल्प केवल मुझे एक कॉलम नाम निर्दिष्ट करने देता है, लेकिन मुझे दो निर्दिष्ट करने की आवश्यकता है। मैं कुछ इस तरह की तलाश में हूँ:
library(dplyr)
# either
left_join(test_data, kantrowitz, by.x = "first_name", by.y = "name")
# or
left_join(test_data, kantrowitz, by = c("first_name", "name"))
इस तरह के प्रदर्शन में शामिल होने का तरीका क्या है?
(कभी भी इस बात का ध्यान न रखें कि कंटरोवित्ज़ कॉर्पस लिंग की पहचान करने का एक बुरा तरीका है। मैं बेहतर कार्यान्वयन पर काम कर रहा हूं, लेकिन मैं यह काम पहले करना चाहता हूं।)