Ajaff
Ajaff

Reputation: 73

How do you replace an entire column in one dataframe with another column in another dataframe?

I have two dataframes. I want to replace the ids in dataframe1 with generic ids. In dataframe2 I have mapped the ids from dataframe1 with the generic ids.

Do I have to merge the two dataframes and after it is merged do I delete the column I don't want?

Thanks.

Upvotes: 1

Views: 44

Answers (3)

Peter
Peter

Reputation: 151

Subsetting data frames isn't very difficult in R: hope this helps, you didn't provide much code so I hope this will be of help to you:

    #create 4 random columns (vectors) of data, and merge them into data frames:
a <- rnorm(n=100,mean = 0,sd=1)
b <- rnorm(n=100,mean = 0,sd=1)
c <- rnorm(n=100,mean = 0,sd=1)
d<- rnorm(n=100,mean = 0,sd=1)

df_ab <- as.data.frame(cbind(a,b))
df_cd <- as.data.frame(cbind(c,d))

#if you want column d in df_cd to equal column a in df_ab simply use the assignment operator
df_cd$d <- df_ab$a
#you can also use the subsetting with square brackets:
df_cd[,"d"] <- df_ab[,"a"]

Upvotes: 1

akrun
akrun

Reputation: 886938

With dplyr

library(dplyr)
left_join(df1, df2, by = 'ids')

Upvotes: 1

Ian Campbell
Ian Campbell

Reputation: 24770

We can use merge and then delete the ids.

dataframe1 <- data.frame(ids = 1001:1010, variable = runif(min=100,max = 500,n=10))
dataframe2 <- data.frame(ids = 1001:1010, generics = 1:10)
result <- merge(dataframe1,dataframe2,by="ids")[,-1]

Alternatively we can use match and replace by assignment.

dataframe1$ids <- dataframe2$generics[match(dataframe1$ids,dataframe2$ids)]

Upvotes: 1

Related Questions