CommencezCommencez gratuitement

Réaliser une jointure par distance entre chaînes

Rapprocher deux sources de données différentes est une tâche très courante en analyse de données. Quand c'est possible, vous devriez utiliser des valeurs clairement identifiables, comme une adresse de courriel, pour faire la jointure entre deux tableaux. Mais que faire si une personne n'a saisi que son nom et que vous devez le retrouver dans une base d'utilisateurs ? La difficulté : les gens peuvent abréger leur prénom ou leur nom de famille, faire une faute de frappe, ou omettre des parties.

Dans l'environnement, il y a deux trames de données : user_input et database. La première contient la saisie erronée de l'utilisateur et la seconde les noms corrects, mais les deux sources contiennent les mêmes 100 noms. Combien pouvez-vous en faire correspondre au moyen d'une jointure basée sur la distance entre chaînes ? Au fait : aucune method de distance n'est définie, donc la valeur par défaut, la distance Optimal String Alignment "osa", sera utilisée.

Cette activité fait partie du cours

Expressions régulières intermédiaires en R

Voir le cours

Instructions de l’exercice

  • Faites la jointure de user_input et database avec une distance maximale max_dist de façon à ce que exactement quatre-vingts noms soient jumelés avec succès. Faites des essais jusqu'à trouver la bonne distance maximale.
  • Utilisez la nouvelle table joined pour afficher une phrase de compte rendu conviviale.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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(___)
))
Modifier et exécuter le code