Spojení pomocí vzdálenosti řetězců
Propojování dvou různých datových zdrojů je v analýze dat velmi běžný úkol. Kdykoli je to možné, měl bys ke spojení tabulek používat jednoznačně identifikovatelné hodnoty, jako je třeba e-mailová adresa. Ale co když uživatel zadal jen své jméno a ty ho musíš dohledat v databázi? Potíž je v tom, že lidé mohou jméno zkrátit, přepsat nebo vynechat jeho část.
V prostředí máš k dispozici dva datové rámce: user_input a database. První obsahuje chybně zadané vstupy od uživatelů, druhý správná jména – oba zdroje přitom obsahují stejných 100 jmen. Kolik z nich se podaří spojit pomocí vzdálenosti řetězců? Mimochodem: metoda method není zadána, takže se použije výchozí metoda Optimal String Alignment "osa".
Toto cvičení je součástí kurzu
Intermediate Regular Expressions in R
Pokyny k cvičení
- Spoj
user_inputadatabases maximální vzdáleností řetězcůmax_disttak, aby bylo úspěšně spárováno přesně osmdesát jmen. Experimentuj, dokud nenajdeš správnou maximální vzdálenost. - Pomocí nově vytvořené tabulky
joinedvypiš přehlednou zprávu ve srozumitelné podobě.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# Join the data frames on a maximum string distance of 2
joined <- stringdist_join(
user_input,
database,
by = c("user_input" = "name"),
___ = ___,
distance_col = "distance",
ignore_case = TRUE
)
# Print the number of rows of the newly created data frame
print(glue(
"{n} out of 100 names were matched successfully",
n = nrow(___)
))