Einen Join mit String-Distanz durchführen
Zwei unterschiedliche Datenquellen zusammenzuführen, ist in der Datenanalyse sehr üblich. Wenn möglich, solltest du eindeutig identifizierbare Werte wie eine E‑Mail‑Adresse verwenden, um zwei Tabellen zu verknüpfen. Aber was, wenn ein Nutzer nur seinen Namen eingegeben hat und du ihn in einer Nutzerdatenbank nachschlagen musst? Das Problem: Menschen kürzen Vor- oder Nachnamen ab, vertippen sich oder lassen Teile ganz weg.
Im Scope gibt es zwei Data Frames: user_input und database. Der erste enthält die fehlerhaften Nutzereingaben, der zweite die korrekten Namen – beide Datenquellen enthalten jedoch dieselben 100 Namen. Wie viele davon kannst du mit einem Join basierend auf der String-Distanz abgleichen? Übrigens: Es ist keine Distanz-method definiert, daher wird standardmäßig die Optimal String Alignment Distance "osa" verwendet.
Diese Übung ist Teil des Kurses
Fortgeschrittene Reguläre Ausdrücke in R
Anleitung zur Übung
- Verknüpfe
user_inputunddatabasemit einer maximalen String-Distanzmax_dist, sodass genau achtzig Namen erfolgreich gematcht werden. Experimentiere, bis du die richtige maximale Distanz gefunden hast. - Nutze die neu erstellte Tabelle
joined, um einen gut lesbaren Berichtssatz auszugeben.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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(___)
))