I have two dataframes df1 and df2, I am looking for the simplest operation to get df3.
I want to replace rows in df1 with rows from df2 if id match  (so rbind.fill is not a solution), and append rows from df2 where id does not exist in df1but only for columns that exist in df2.
I guess I could use several joins and antijoins and then merge but I wonder if there already exists a function for that operation.
df1 <- data.frame(id = 1:5, c1 = 11:15, c2 = 16:20, c3 = 21:25)
df2 <- data.frame(id = 4:7, c1 = 1:4, c2 = 5:8)
df1
  id c1 c2 c3
  1 11 16 21
  2 12 17 22
  3 13 18 23
  4 14 19 24
  5 15 20 25
df2
  id c1 c2
  4  1  5
  5  2  6
  6  3  7
  7  4  8
df3
  id c1 c2 c3
  1  11 16 21
  2  12 17 22
  3  13 18 23
  4  1  5  24
  5  2  6  25
  6  3  7  NULL
  7  4  8  NULL
 
    