library(dplyr)
library(tidyr)
df1 <- data.frame(V1 = c("aa", "bb", "aa", "cc", "dd", "ee", "aa"), V2 = c("ff", "gg", "hh", "yy", "jj", "kk", "hh"), stringsAsFactors = FALSE)
df2 <- data.frame(V1 = c("aa", "gg", "cc", "jj", "kk"), V2 = c(1,2,3,4,5), stringsAsFactors = FALSE)
left_join(df1, df2, by = c("V2" = "V1")) %>%
left_join(., df2, by = "V1") %>%
mutate(V3 = ifelse(is.na(V2.y), V2.y.y, V2.y)) %>%
select(-V2.y, -V2.y.y)
Создает эту таблицу, затем удаляет V2.y
и V2.y.y
.
V1 V2.x V2.y V2.y.y V3
1 aa ff NA 1 1
2 bb gg 2 NA 2
3 aa hh NA 1 1
4 cc yy NA 3 3
5 dd jj 4 NA 4
6 ee kk 5 NA 5
7 aa hh NA 1 1
Что дает вам это:
V1 V2.x V3
1 aa ff 1
2 bb gg 2
3 aa hh 1
4 cc yy 3
5 dd jj 4
6 ee kk 5
7 aa hh 1