Проблема в том, что df2 не находится в структуре, которая облегчает присоединение, поэтому я бы изменил структуру, используя tidyr
:
library(dplyr)
library(tidyr)
df3 <-
df1 %>%
left_join(df2 %>%
gather(YEAR, GDP, -COUNTRY) %>%
mutate(YEAR = as.numeric(substr(YEAR, 4, 7))),
by = c("COUNTRY", "YEAR"))
Обратите внимание, что это не дает ожидаемого ответа, потому что годы отличаются. В df1 есть 2015 год, но в df2 есть данные для GDB2018.
использованные данные:
df1 <- tibble::tribble(
~COUNTRY, ~YEAR, ~TRADE,
"Spain", 2016, 276,
"Germany", 2016, 323,
"France", 2016, 392,
"Spain", 2017, 456,
"Germany", 2017, 564,
"France", 2017, 359,
"Spain", 2015, 767,
"Germany", 2015, 868,
"France", 2015, 969
)
df2 <- tibble::tribble(
~COUNTRY, ~GDP2016, ~GDP2017, ~GDP2018,
"Spain", 1111, 999, 444,
"Germany", 2222, 888, 555,
"France", 3333, 777, 666
)