Лично мне нравится добавлять справочную таблицу в исходную таблицу. Например, (используя dplyr
) вы могли бы сделать что-то вроде:
df2 %>% left_join(df1, by = "a1") %>% mutate(new_b1 = ifelse(!is.na(b1), b1, a1))
Что приводит к
d1 a1 b1 new_b1
1 sale b2 bb2 bb2
2 sale2 c2 cc2 cc2
3 sale3 d2 <NA> d2
Для того, чтобы получить заявленный желаемый результат, хотя он и выглядит немного странно менять столбец слияния, но все возможно, вы можете сделать что-то вроде:
df2 %>% left_join(df1, by = "a1") %>%
mutate(b1 = ifelse(!is.na(b1), b1, a1)) %>%
select(-a1) %>%
rename(a1 = d1)
, что приведет к
a1 b1
1 sale bb2
2 sale2 cc2
3 sale3 d2