Merging more than 2 dataframes in R by rownames
Editing your function, I have came up with the function which allows you to merge more data frames by a specific column key (name of the column). The resulted data frame includes all the variable of the merged data frames (if you wanna keep just the common variables (excluding NA, use: all.x= FALSE, all.y= FALSE
)
MyMerge <- function(x, y){
df <- merge(x, y, by= "name of the common column", all.x= TRUE, all.y= TRUE)
return(df)
}
new.df <- Reduce(MyMerge, list(df1, df2, df3, df4))
I have been looking for the same function. After trying a couple of the options here and others elsewhere. The easiest for me was:
cbind.data.frame( df1,df2,df3,df4....)
join_all
from plyr
will probably do what you want. But they all must be data frames and the rownames are added as a column
require(plyr)
df3 <- data.frame(df3)
df4 <- data.frame(df4)
df1$rn <- rownames(df1)
df2$rn <- rownames(df2)
df3$rn <- rownames(df3)
df4$rn <- rownames(df4)
df <- join_all(list(df1,df2,df3,df4), by = 'rn', type = 'full')
type
argument should help even if the rownames vary and do not match
If you do not want the rownames:
df$rn <- NULL