How to left_join across multiple timepoints in long format
19:52 02 Dec 2025

I'm trying to left_join data2 to data1, so that I end up with data3

data1 <- data.frame(ID = 1:4,    
                    Time = 0,
                    X1 = c("a1", "a2", "a3", "a4"))

data2 <- data.frame(ID = 1:6,    
                    Time = 1,
                    X1 = c("a1", "a2", "a3", "a4", "a5", "a6"))

data3 <- data.frame(ID = c(1,2,3,4,1,2,3,4),    
                    Time = c("0","1","0","1", "0", "1","0","1"),
                    X1 = c("a1", "a1", "a2", "a2", "a3", "a3", "a4", "a4"))

I've tried:

data3 <- data2 %>%
  left_join(data1, by ="ID") 

and

data3 <- data2 %>%
  left_join(data1, by = c("ID","Time"))

which didn't work, and I tried to search for a solution but can't figure out the right keywords or question phrase. Sorry about that. Can someone please help?

r join dplyr left-join