আমার কাছে দুটি ডেটা ফ্রেম রয়েছে যা আমি 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
।
বেসে আরআই এইভাবে মার্জটি সম্পাদন করবে:
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>
তবে আমি dplyr এ এটি করতে চাই কারণ আমি আমার অন্যান্য সমস্ত ডেটা ম্যানিপুলেশনের জন্য সেই প্যাকেজটি ব্যবহার করছি। 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"))
Dplyr ব্যবহার করে এই জাতীয় যোগদানের উপায় কী?
(কখনই মনে করবেন না যে ক্যান্ট্রোয়েটজ কর্পাস লিঙ্গ সনাক্তকরণের একটি খারাপ উপায় I'm