ÎncepețiÎncepe gratuit

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

Vezi cursul

Instrucțiuni pentru exercițiu

  • Unește user_input și database cu o distanță maximă max_dist astfel î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 joined pentru 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(___)
))
Editează și rulează codul