Если мы назовем большую df1, а маленькую df2, вы сможете сделать соединение, удовлетворяющее вашим требованиям.Если я правильно понимаю ваш вопрос, вам нужен фрейм данных с множеством строк (около 150 тыс.), К каждому из которых прикреплены атрибуты страны.Но вы хотите отбросить любую из 150-тысячных строк, которые не имеют соответствующей страны.
В соответствии с предложением @aurelianoguedes вы должны просто сразу выполнить внутреннее объединение, которое избавит от любых строк в большом кадре данных, которые не совпадают в маленьком df.
df.merged = dplyr::inner_join(df1, df2, by=c('Country' = 'CNTRY'))
Старое решение с фильтром + left_join:
df.merged = df1 %>%
filter(Country %in% df2$CNTRY) %>%
left_join(df2, by=c('Country' = 'CNTRY'))