У меня есть два кадра данных:
df1 <- data.frame(City=c("Munchen_Paris","Munchen_Paris","Barcelona_Milan", "Londen_Dublin","Madrid_Malaga"),
value1=c(11,21,33,2,53))
df2 <- data.frame(City=c("Munnich_Parijs","Barcelona_Munster","Barcelona_Milan","London_Dub","London_Oxford","Pisa_Luik"),
value2=c(22,2,44,54,29,65))
Я пытаюсь объединить эти кадры данных с fuzzyjoin.
Я ищу результат:
City.x value1 City.y value2 string_distance
1 Munchen_Paris 11 Munnich_Parijs 22 5
2 Munchen_Paris 21 Munnich_Parijs 22 5
3 Barcelona_Milan 33 Barcelona_Milan 44 0
4 Londen_Dublin 2 London_Dub 54 4
( для каждой строки в df1 с совпадением в df2 для City с string_distance <9 я хочу строку в новой таблице, содержащую все столбцы из df1 и df2 с самым низким string_distance) Когда я делаю: </p>
df3 <- stringdist_semi_join(df1, df2, by = "City", max_dist = 9, distance_col = "string_distance")
Я получаю только эти столбцы:
> df3
City value1
1 Munchen_Paris 11
2 Munchen_Paris 21
3 Barcelona_Milan 33
4 Londen_Dublin 2
Если я сделаю полное объединение, я получу это:
> df3 <- stringdist_full_join(df1, df2, by = "City", max_dist = 9, distance_col = "string_distance")
> df3
City.x value1 City.y value2 string_distance
1 Munchen_Paris 11 Munnich_Parijs 22 5
2 Munchen_Paris 21 Munnich_Parijs 22 5
3 Barcelona_Milan 33 Barcelona_Munster 2 6
4 Barcelona_Milan 33 Barcelona_Milan 44 0
5 Londen_Dublin 2 London_Dub 54 4
6 Londen_Dublin 2 London_Oxford 29 7
7 Madrid_Malaga 53 <NA> NA NA
8 <NA> NA Pisa_Luik 65 NA
Я могу удалить строки, содержащие NA и group_by City.x, хотя тогда я потерять одну из первых двух строк.
Если я сделаю inner_join, я получу это:
df3 <- stringdist_inner_join(df1, df2, by = "City", max_dist = 9, distance_col = "string_distance")
df3
> df3
City.x value1 City.y value2 string_distance
1 Munchen_Paris 11 Munnich_Parijs 22 5
2 Munchen_Paris 21 Munnich_Parijs 22 5
3 Barcelona_Milan 33 Barcelona_Munster 2 6
4 Barcelona_Milan 33 Barcelona_Milan 44 0
5 Londen_Dublin 2 London_Dub 54 4
6 Londen_Dublin 2 London_Oxford 29 7
Странно, что stringdist_semi_join не показывает столбцы df2? Есть ли другой способ достичь результата, который я ищу в первой таблице выше?
Большое спасибо!