У меня есть два фрейма данных, к которым я пытаюсь присоединиться на основе поля названия страны, и я хотел бы достичь следующего: когда будет найдено идеальное совпадение, я хотел бы сохранить только эту строку, в противном случае я бы хотел показать все строки / параметры.
library(fuzzyjoin)
df1 <- data.frame(
country = c('Germany','Germany and Spain','Italy','Norway and Sweden','Austria','Spain'),
score = c(7,8,9,10,11,12)
)
df2 <- data.frame(
country_name = c('Germany and Spain','Germany','Germany.','Germania','Deutschland','Germany - ','Spun','Spain and Portugal','Italy','Italia','Greece and Italy',
'Australia','Austria...','Norway (Scandinavia)','Norway','Sweden'),
comments = c('xxx','rrr','ttt','hhhh','gggg','jjjj','uuuuu','ooooo','yyyyyyyyyy','bbbbb','llllll','wwwwwww','nnnnnnn','cc','mmmm','lllll')
)
j <- regex_left_join(df1,df2, by = c('country' = 'country_name'), ignore_case = T)
Результаты (j) показывают, что «Германия и Испания» появляются 3 раза, первое вхождение - идеальное совпадение, я хотел бы оставить только этот и избавиться от другие два. «Норвегия и Швеция» не имеют идеального соответствия, поэтому я хотел бы сохранить два возможных варианта / строки (как есть).
Как я могу это сделать?