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
Istruzioni dell'esercizio
- Unisci
user_inputedatabaseimpostando una distanza massima tra stringhemax_disttale che vengano abbinate esattamente ottanta occorrenze. Fai qualche tentativo finché non trovi la distanza massima giusta. - Usa la nuova tabella
joinedper 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(___)
))