Zacznij terazZacznij za darmo

Łączenie zbiorów danych za pomocą odległości między łańcuchami

Łączenie dwóch różnych źródeł danych to jedno z najczęstszych zadań w analizie danych. Gdy tylko to możliwe, warto korzystać z jednoznacznych identyfikatorów – jak adres e-mail – do złączenia dwóch tabel. Ale co zrobić, gdy użytkownik podał tylko swoje imię i nazwisko, a ty musisz je odszukać w bazie danych? Problem polega na tym, że ludzie często skracają imiona lub nazwiska, popełniają literówki albo pomijają części nazwy.

W środowisku dostępne są dwie ramki danych: user_input i database. Pierwsza zawiera błędne dane wpisane przez użytkowników, a druga – poprawne nazwy. Oba źródła zawierają te same 100 nazwisk. Ile z nich uda się dopasować za pomocą złączenia opartego na odległości między łańcuchami? Uwaga: nie zdefiniowano parametru method, więc zostanie użyta domyślna metoda – odległość Optymalnego Wyrównania Ciągów "osa".

To ćwiczenie jest częścią kursu

Wyrażenia regularne w R – poziom średnio zaawansowany

Zobacz kurs

Instrukcje do ćwiczenia

  • Złącz user_input i database, ustawiając maksymalną odległość max_dist tak, aby dokładnie osiemdziesiąt nazwisk zostało pomyślnie dopasowanych. Eksperymentuj, aż znajdziesz właściwą wartość.
  • Użyj nowo utworzonej tabeli joined, aby wyświetlić czytelny komunikat podsumowujący wynik.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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(___)
))
Edytuj i uruchom kod