Combine dos tablas haciendo coincidir columnas, mantenga columnas únicas de la segunda tabla

Resuelto Are-Pro-Gram-In asked hace 54 años • 0 respuestas

Soy nuevo en las funciones de unión de dplyr. Tengo dos mesas que quiero combinar.

df1 <- data.frame(name = c('Fred', 'Fred', 'Fred', 'Sasha', 'Sasha', 'Sasha'),
                  year = c('2018-19', '2019-20', '2020-21', '2018-19', '2019-20', '2020-21'),
                  outcome1 = 1:6)
df2 <- data.frame(name = c('Sasha', 'Sasha', 'Sasha', 'Rebecca', 'Rebecca', 'Rebecca'),
                  year = c('2019-20', '2020-21', '2021-22', '2019-20', '2020-21', '2021-22'),
                  outcome2 = 2:7)

para que la tabla resultante se vea así.

df3 <- data.frame(name = c('Fred', 'Fred', 'Fred', 'Sasha', 'Sasha', 'Sasha', 'Sasha'),
                  year = c('2018-19', '2019-20', '2020-21', '2018-19', '2019-20', '2020-21', '2021-22'),
                  outcome1 = c(1:6, NA),
                  outcome2 = c(NA, NA, NA, NA, 2, 3, 4))

Encontré una solución y full_join(df1, df2, by = c('name', 'year')luego filtrar a Rebecca de la tabla resultante %>% filter(name %in% df1$name), pero ¿hay alguna función en la que pueda incluir df1 y df2 para obtener df3?

Are-Pro-Gram-In avatar Jan 01 '70 08:01 Are-Pro-Gram-In
Aceptado

Puede utilizar subset, siguiendo la acción de unión completa a través demerge

> subset(merge(df1, df2, all = TRUE), name %in% df1$name)
    name    year outcome1 outcome2
1   Fred 2018-19        1       NA
2   Fred 2019-20        2       NA
3   Fred 2020-21        3       NA
7  Sasha 2018-19        4       NA
8  Sasha 2019-20        5        2
9  Sasha 2020-21        6        3
10 Sasha 2021-22       NA        4
ThomasIsCoding avatar Feb 16 '2024 20:02 ThomasIsCoding