Łą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
Instrukcje do ćwiczenia
- Złącz
user_inputidatabase, ustawiając maksymalną odległośćmax_disttak, 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(___)
))