library(tidyverse)
Я изменил ваши данные, чтобы на моей иллюстрации не было вывода NULL
.
df <- tribble(
~ExplYear, ~RemovalReason,
2018, "Infection",
2017, "Dysfunction",
2016, "Infection")
impl_per_year <- tribble(
~ImplYear, ~n,
2017, 14,
2016, 46,
2016, 64
)
left_join
- это функция, которую вы ищете,Это часть семейства функций dplyr::join
, которые делают это.
Хорошо иметь одинаковые имена для «объединения» переменных, но в вашем случае вам нужна опция by = c( ... )
, чтобы left_join
знал, к чему вы присоединяетесь.
left_join(df, impl_per_year, by = c("ExplYear" = "ImplYear"))
# A tibble: 4 x 3
ExplYear RemovalReason n
<dbl> <chr> <dbl>
1 2018 Infection NA
2 2017 Dysfunction 14
3 2016 Infection 46
4 2016 Infection 64
В зависимости от того, что вы хотите, учитывайте right_join
, inner_join
и т. Д., Пока не получите результат, который ищете.Например:
inner_join(df, impl_per_year, by = c("ExplYear" = "ImplYear"))
# A tibble: 3 x 3
ExplYear RemovalReason n
<dbl> <chr> <dbl>
1 2017 Dysfunction 14
2 2016 Infection 46
3 2016 Infection 64
..., который дает только успешные совпадения из обоих выпусков.