How to join multiple data frames using dplyr?
It's been too late i know....today I got introduced to the unanswered questions section. Sorry to bother.
Using left_join()
dfs <- list( df1 = data.frame(b = c("a", "b", "c"), a = 1:3), df2 = data.frame(d = c("a", "c", "d"), c = 4:6), df3 = data.frame(b = c("b", "c", "e"), d = 7:9) )func <- function(...){ df1 = list(...)[[1]] df2 = list(...)[[2]] col1 = colnames(df1)[1] col2 = colnames(df2)[1] xxx = left_join(..., by = setNames(col2,col1)) return(xxx)}Reduce( func, dfs)# b a c d#1 a 1 4 NA#2 b 2 NA 7#3 c 3 5 8
Using merge()
:
func <- function(...){ df1 = list(...)[[1]] df2 = list(...)[[2]] col1 = colnames(df1)[1] col2 = colnames(df2)[1] xxx=merge(..., by.x = col1, by.y = col2, , all.x = T) return(xxx)}Reduce( func, dfs)# b a c d#1 a 1 4 NA#2 b 2 NA 7#3 c 3 5 8