2014-10-28 10 views
57

मुझे पता है dplyr v3.0 आप विभिन्न चर पर शामिल होने के लिए अनुमति देता है:कई कॉलम या समग्र कुंजी पर शामिल हो सकते हैं?

left_join(x, y, by = c("a" = "b") से मेल खाएगी x.ay.b को

हालांकि, यह चर का एक संयोजन पर शामिल होने के लिए संभव है? या क्या मुझे समय से पहले एक समग्र कुंजी जोड़नी है?

की तरह कुछ है:

left_join(x, y, by = c("a c" = "b d") के संयोजन [x.a और x.c] से [y.b और y.d] मैच के लिए

उत्तर

96

आप की by तर्क को 1 से अधिक लंबाई की एक नामित वेक्टर पारित कर सकते हैं left_join():

library(dplyr) 

d1 <- data_frame(
    x = letters[1:3], 
    y = LETTERS[1:3], 
    a = rnorm(3) 
) 

d2 <- data_frame(
    x2 = letters[3:1], 
    y2 = LETTERS[3:1], 
    b = rnorm(3) 
) 

left_join(d1, d2, by = c("x" = "x2", "y" = "y2")) 
+0

इसके लिए धन्यवाद; यह भी काम करता है जब डेटा फ्रेम में कॉलम का एक ही नाम होता है, उदा। 'left_join (d1, d2, by = c (" firstname "=" firstname "," lastname "=" lastname "))'। कुछ के लिए स्पष्ट नहीं हो सकता है। –

+0

जब कॉलम कॉलम समान होते हैं, तो आप '=': 'left_join (d1, d2, by = c (" firstname "," lastname ") से भी बच सकते हैं)' – davechilders

संबंधित मुद्दे