Réaliser une jointure par distance de chaînes
Rapprocher deux sources de données différentes est une tâche très fréquente en analyse de données. Quand c’est possible, vous devriez utiliser des identifiants clairs, comme une adresse e‑mail, pour joindre deux tables. Mais que faire si un utilisateur n’a saisi que son nom et que vous devez le retrouver dans une base d’utilisateurs ? La difficulté : les personnes peuvent abréger leur prénom ou leur nom, faire une faute de frappe ou omettre des parties.
Dans l’environnement, vous disposez de deux data frames : user_input et database. Le premier contient la saisie imparfaite de l’utilisateur et le second les noms corrects, mais les deux sources contiennent les mêmes 100 noms. Combien pouvez-vous en faire correspondre avec une jointure basée sur la distance entre chaînes ? Au passage : aucun method de distance n’est défini, donc la valeur par défaut, la distance Optimal String Alignment "osa", sera utilisée.
Cet exercice fait partie du cours
Expressions régulières intermédiaires en R
Instructions
- Faites une jointure entre
user_inputetdatabaseavec une distance maximalemax_distde façon à obtenir exactement quatre‑vingts correspondances réussies. Expérimentez jusqu’à trouver la bonne distance maximale. - Utilisez la nouvelle table
joinedpour afficher une phrase de rapport lisible par un humain.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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(___)
))