MSM
MSM

Reputation: 69

How to merge two data frame which has jumbled column names

I have 2 data frames df1 and df2 with the same column names but in different column numbers. How to merge as df3 without creating additional columns/rows.

df1

a  b  c
1  3  6

df2

b  c  a
5  6  1

expected df3

a  b  c
1  3  6
1  5  6

Tried below code but it did not work

df3=merge(df1, df2, by = "col.names")

Upvotes: 1

Views: 447

Answers (2)

Ronak Shah
Ronak Shah

Reputation: 389225

Rearrange columns of any one dataframe according on another dataframe so both the columns have the same order of column names and then use rbind.

rbind(df1, df2[names(df1)])

#  a b c
#1 1 3 6
#2 1 5 6

In this case, using rbind(df1, df2) should work too.

Upvotes: 0

akrun
akrun

Reputation: 887741

We may use bind_rows which automatically find the matching column names and if it is not there, it will add a NA row for those doesn't have. The order of columns will be based on the order from the first dataset input in `bind_rows i.e. df1

library(dplyr)
bind_rows(df1, df2)

-output

  a b c
1 1 3 6
2 1 5 6

data

df1 <- structure(list(a = 1L, b = 3L, c = 6L), class = "data.frame", row.names = c(NA, 
-1L))

df2 <- structure(list(b = 5L, c = 6L, a = 1L), class = "data.frame", row.names = c(NA, 
-1L))

Upvotes: 1

Related Questions