IniziaInizia gratis

Eseguire un join basato sulla distanza tra stringhe

Mettere insieme due sorgenti dati diverse è un compito molto comune nell’analisi dei dati. Quando possibile, dovresti usare valori chiaramente identificabili, come un indirizzo email, per unire due tabelle. Ma cosa succede se un utente ha inserito solo il proprio nome e devi cercarlo in un database utenti? La difficoltà: le persone potrebbero abbreviare nome o cognome, fare un errore di battitura o omettere parti del nome.

Nello scope ci sono due data frame: user_input e database. Il primo contiene l’input dell’utente con errori e il secondo i nomi corretti, ma entrambe le sorgenti contengono gli stessi 100 nomi. Quanti di questi riesci ad abbinare con un join basato sulla distanza tra stringhe? A proposito: non è definito alcun method di distanza, quindi verrà usato il valore predefinito, Optimal String Alignment distance "osa".

Questo esercizio fa parte del corso

Espressioni regolari intermedie in R

Visualizza il corso

Istruzioni dell'esercizio

  • Unisci user_input e database impostando una distanza massima tra stringhe max_dist tale che vengano abbinate esattamente ottanta occorrenze. Fai qualche tentativo finché non trovi la distanza massima giusta.
  • Usa la nuova tabella joined per stampare una frase di report leggibile e amichevole.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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(___)
))
Modifica ed esegui il codice