Realizarea unui join bazat pe distanța dintre șiruri
Combinarea a două surse de date diferite este o sarcină foarte comună în analiza datelor. Ori de câte ori este posibil, ar trebui să folosești valori clar identificabile – cum ar fi o adresă de e-mail – pentru a uni două tabele. Dar ce faci dacă un utilizator a introdus doar numele său și trebuie să-l cauți într-o bază de date? Dificultatea constă în faptul că oamenii pot prescurta prenumele sau numele de familie, pot face greșeli de tastare sau pot omite cu totul anumite părți.
În mediul de lucru există două cadre de date: user_input și database. Primul conține datele introduse incorect de utilizator, iar al doilea conține numele corecte – ambele surse includ aceleași 100 de nume. Câte dintre ele poți potrivi cu un join bazat pe distanța dintre șiruri? De altfel, nu este definită nicio metodă (method), așa că se va folosi implicit distanța Optimal String Alignment: "osa".
Acest exercițiu face parte din cursul
Expresii regulate intermediare în R
Instrucțiuni pentru exercițiu
- Unește
user_inputșidatabasecu o distanță maximămax_distastfel încât exact optzeci de nume să fie potrivite cu succes. Experimentează până găsești distanța maximă potrivită. - Folosește tabelul nou creat
joinedpentru a afișa un mesaj raport ușor de citit.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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(___)
))