Следующее должно работать с любым количеством маршрутов для любого количества городов отправления и назначения.
Объединяет столбцы p
и d
и объединяет информацию о городе назначения.Единственная сложная задача - назначить произвольные номера маршрутов, что он делает с вызовом min_rank()
.
library(dplyr)
library(tidyr)
# slightly expanded data set to make sure it works with multiple departure cities
d1 <- data.frame(
code = c(rep("AMM", 3), "TYO"),
d = c("PFO", "BER", "SVQ", "PFO"),
p = c(3, 3, 7, 4)
)
d2 <- data.frame(
code = c("AMM", "TYO"),
cityname = c("Zizya", "Tokyo"),
country = c("Jordan", "Japan")
)
d1 %>%
unite(dp, d, p, sep = ",") %>%
left_join(d2, by = "code") %>%
group_by(code) %>%
mutate(route = min_rank(dp)) %>%
mutate(route = paste0("r", route)) %>%
spread(route, dp)