1

I have a dataframe which looks like this:

dataframe <- data.frame(Cust_ID = c("1","2","2","3","1","3","1","1","2","2"), 
                        App_date = as.Date(c("2023-05-01","2023-05-02","2023-05-03","2023-05-06","2023-04-30","2023-04-04","2023-05-30","2023-05-31","2023-05-30","2023-05-31")),
                        Product = c("AA","AA","BB","AA","CC","BB","AA","AA","CC","BB"),
                        event_id = NA)

dataframe2 <- data.frame(Cust_ID = c("1","3","1","3","1","1"), 
                        App_date = as.Date(c("2023-05-01","2023-05-06","2023-04-30","2023-04-04","2023-05-30","2023-05-31")),
                        Product = c("AA","AA","CC","BB","AA","AA"),
                        Age = c(50,32,50,32,50,50)
                        event_id = c(2,4,2,5,NA,NA))

The resultant that i want should look like this:

resultant_data <- data.frame(Cust_ID = c("1","2","2","3","1","3","1","1","2","2"), 
                        App_date = as.Date(c("2023-05-01","2023-05-02","2023-05-03","2023-05-06","2023-04-30","2023-04-04","2023-05-30","2023-05-31","2023-05-30","2023-05-31")),
                        Product = c("AA","AA","BB","AA","CC","BB","AA","AA","CC","BB"),
                        event_id = c(2,NA,NA,4,2,5,NA,NA,NA,NA))
Priyansh
  • 25
  • 4
  • Does this answer your question? [How to join (merge) data frames (inner, outer, left, right)](https://stackoverflow.com/questions/1299871/how-to-join-merge-data-frames-inner-outer-left-right) – Jamie May 10 '23 at 16:12
  • Could you describe in words what you are looking to do? – jpsmith May 10 '23 at 16:36
  • I want to add event_id in dataframe by using Cust_ID and App_date from dataframe2 – Priyansh May 11 '23 at 07:34

1 Answers1

0

use dplyr::row_update or dplyr::rows_patch:

library(dplyr)
dataframe$event_id <- as.numeric(dataframe$event_id)

rows_update(dataframe,dataframe2,by=c("Cust_ID","App_date","Product"))
   Cust_ID   App_date Product event_id
1        1 2023-05-01      AA        2
2        2 2023-05-02      AA       NA
3        2 2023-05-03      BB       NA
4        3 2023-05-06      AA        4
5        1 2023-04-30      CC        2
6        3 2023-04-04      BB        5
7        1 2023-05-30      AA       NA
8        1 2023-05-31      AA       NA
9        2 2023-05-30      CC       NA
10       2 2023-05-31      BB       NA

Updates: You can mutate empty columns (Age in this case):

rows_update(dataframe %>%mutate(Age=NA_real_),dataframe2,by=c("Cust_ID","App_date","Product"))

   Cust_ID   App_date Product event_id Age
1        1 2023-05-01      AA        2  50
2        2 2023-05-02      AA       NA  NA
3        2 2023-05-03      BB       NA  NA
4        3 2023-05-06      AA        4  32
5        1 2023-04-30      CC        2  50
6        3 2023-04-04      BB        5  32
7        1 2023-05-30      AA       NA  50
8        1 2023-05-31      AA       NA  50
9        2 2023-05-30      CC       NA  NA
10       2 2023-05-31      BB       NA  NA
one
  • 3,121
  • 1
  • 4
  • 24