danilinares
danilinares

Reputation: 1260

Combine two data frames and remove duplicate columns

I want to cbind two data frames and remove duplicated columns. For example:

df1 <- data.frame(var1=c('a','b','c'), var2=c(1,2,3))
df2 <- data.frame(var1=c('a','b','c'), var3=c(2,4,6))

cbind(df1,df2) #this creates a data frame in which column var1 is duplicated

I want to create a data frame with columns var1, var2 and var3, in which column var2 is not repeated.

Upvotes: 11

Views: 23416

Answers (3)

svendvn
svendvn

Reputation: 161

The function mutate in dplyr can take two dataframes as arguments and all columns in the second dataframe will overwrite existing columns in the first dataframe. Columns that don't exist in the first dataframe will be constructed in the new dataframe.

> mutate(df1,df2)
   var1 var2 var3
 1    a    1    2
 2    b    2    4
 3    c    3    6

Upvotes: 1

Sam
Sam

Reputation: 358

In case you inherit someone else's dataset and end up with duplicate columns somehow and want to deal with them, this is a nice way to do it:

for (name in unique(names(testframe))) {
  if (length(which(names(testframe)==name)) > 1) {
    ## Deal with duplicates here. In this example
    ## just print name and column #s of duplicates:
    print(name)
    print(which(names(testframe)==name))
  }
}

Upvotes: 1

kohske
kohske

Reputation: 66842

merge will do that work.

try:

merge(df1, df2)

Upvotes: 12

Related Questions