mockash
mockash

Reputation: 1360

How to append two dataframe by overwriting the existing rows

I have a dataframe say df. I have extracted a sample 5% rows from df and created a new dataframe df1 to do few manipulations in the dataset. Now I need to append df1 to df and overwrite the existing rows of df1 as it is a subset of df.

I tried to extract the rows that are not present in df using

    df2 <- subset(df, !(rownames(df) %in% rownames(df1[])))

But this didnt work. Can anyone help please.

Upvotes: 0

Views: 59

Answers (2)

Ronak Shah
Ronak Shah

Reputation: 388817

You should always try to make a reproducible example so that it is easy for others to help you

I have tried to do that with the help of mtcars dataset

#Copied mtcars data into df
df = mtcars
# sample 5 rows from df 
df1 = df[sample(1:nrow(df), 5), ]
# did few manipulations in the dataset
df1 = df1 * 2
# overwrite the existing rows of df1 as it is a subset of df
df[rownames(df1), ] <- df1

Upvotes: 1

Roman Luštrik
Roman Luštrik

Reputation: 70623

Save the filter and re-use it like so

set.seed(357)
xy <- data.frame(col1 = letters[1:5], col2 = runif(5))

  col1       col2
1    a 0.10728121
2    b 0.05504568
3    c 0.27987766
4    d 0.22486212
5    e 0.65348521


your.condition <- xy$col1 %in% c("c", "d")
newxy1 <- xy[your.condition, ]
newxy1$col2 <- 1:2

xy[your.condition, "col2"] <- newxy1$col2
xy

  col1       col2
1    a 0.10728121
2    b 0.05504568
3    c 1.00000000
4    d 2.00000000
5    e 0.65348521

Upvotes: 2

Related Questions