Combine dos tablas haciendo coincidir columnas, mantenga columnas únicas de la segunda tabla
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?
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