मैं left_join
से अधिक डेटा फ्रेम करना चाहते हैं:dplyr का उपयोग कर एकाधिक डेटा फ्रेम में कैसे शामिल हों?
dfs <- list(
df1 = data.frame(a = 1:3, b = c("a", "b", "c")),
df2 = data.frame(c = 4:6, b = c("a", "c", "d")),
df3 = data.frame(d = 7:9, b = c("b", "c", "e"))
)
Reduce(left_join, dfs)
# a b c d
# 1 1 a 4 NA
# 2 2 b NA 7
# 3 3 c 5 8
यह काम करता है क्योंकि वे सभी एक ही b
स्तंभ है, लेकिन Reduce
मुझे अतिरिक्त तर्क है कि मैं left_join
को पारित कर सकते हैं निर्दिष्ट नहीं देता। क्या इस तरह के लिए कुछ काम है?
dfs <- list(
df1 = data.frame(a = 1:3, b = c("a", "b", "c")),
df2 = data.frame(c = 4:6, d = c("a", "c", "d")),
df3 = data.frame(d = 7:9, b = c("b", "c", "e"))
)
अद्यतन
काम करता है इस तरह की: Reduce(function(...) left_join(..., by = c("b" = "d")), dfs)
लेकिन जब by
एक तत्व की तुलना में अधिक है, यह इस त्रुटि देता है: Error: cannot join on columns 'b' x 'd': index out of bounds
(डीएफएस समारोह (...) left_join (..., यहाँ अन्य args),) आप 'कम नहीं कर सकते' ? –
मैंने इसके बारे में सोचा नहीं था। हाँ मैं कर सकता हूँ! इसे अपने उत्तर – nachocab
हम्म के रूप में लिखने के लिए स्वतंत्र महसूस करें, वास्तव में, यह तोड़ता है यदि 'by' में एक से अधिक तत्व हैं। अद्यतन – nachocab