Kom igångKom igång gratis

Utföra en join med strängavstånd

Att kombinera två olika datakällor är en mycket vanlig uppgift inom dataanalys. När det är möjligt bör du använda tydligt identifierbara värden, som en e-postadress, för att koppla samman två tabeller. Men vad händer om en användare bara angett sitt namn och du måste slå upp det i en användardatabas? Svårigheten är att personer kan förkorta sitt för- eller efternamn, stava fel eller utelämna delar helt.

I scope finns två dataramar: user_input och database. Den första innehåller felaktig användarinmatning och den andra de korrekta namnen – men båda datakällorna innehåller samma 100 namn. Hur många av dem kan du matcha med en join baserad på strängavstånd? Observera att ingen distansmetod (method) har definierats, så standardmetoden Optimal String Alignment-avstånd "osa" används.

Den här övningen är en del av kursen

Reguljära uttryck på mellannivå i R

Visa kurs

Övningsinstruktioner

  • Koppla samman user_input och database med ett maximalt strängavstånd max_dist så att exakt åttio namn matchas. Experimentera tills du hittar rätt maxvärde.
  • Använd den nyskapade tabellen joined för att skriva ut en lättläst rapportmening.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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(___)
))
Redigera och kör kod