Générer et comparer des paires

Nettoyer des données avec R

Maggie Matsui

Content Developer @ DataCamp

Quand les jointures ne suffisent pas

La table de gauche comporte des colonnes événement et heure. Matchs : Houston Rockets vs Chicago Bulls à 19 h. Miami Heat vs Los Angeles Lakers à 19 h. Brooklyn Nets vs Orlando Magic à 20 h. Denver Nuggets vs Miami Heat à 21 h. San Antonio Spurs vs Atlanta Hawks à 21 h. La table de droite affiche : NBA : Nets vs Magic à 20 h. NBA : Bulls vs Rockets à 21 h. NBA : Heat vs Lakers à 19 h. NBA : Grizzlies vs Heat à 22 h. NBA : Heat vs Cavaliers à 21 h.

Nettoyer des données avec R

Quand les jointures ne suffisent pas

Nettoyer des données avec R

Qu'est-ce que le record linkage ?

record_linkage_1.png

Nettoyer des données avec R

Qu'est-ce que le record linkage ?

À gauche, deux bases avec des balais, intitulées Data A et Data B

Nettoyer des données avec R

Qu'est-ce que le record linkage ?

Des flèches vont de Data A et Data B vers trois paires de personnes, intitulé Générer des paires

Nettoyer des données avec R

Qu'est-ce que le record linkage ?

Une flèche va de générer des paires vers deux colonnes de cercles avec des flèches entre eux dans divers sens. Description : comparer les paires.

Nettoyer des données avec R

Qu'est-ce que le record linkage ?

Une flèche va de comparer les paires vers une personne tenant une pancarte « .93 ». Intitulé : scorer les paires.

Nettoyer des données avec R

Qu'est-ce que le record linkage ?

Flèche de scorer les paires vers une chaîne, intitulé lier les données.

Nettoyer des données avec R

Qu'est-ce que le record linkage ?

Même schéma avec un encadré bleu autour de l'étape générer des paires

Nettoyer des données avec R

Paires d'enregistrements

Deux tables, df_A et df_B, contenant des noms, codes postaux et États. Une ligne est surlignée dans df_A pour Keaton Z Snyder, zip 15020, État PA. Une ligne est surlignée dans df_B pour Keaton Snyder, zip 15020, État PA.

Nettoyer des données avec R

Générer des paires

Mêmes tables avec des lignes reliant chaque ligne de df_A à chaque ligne de df_B, toutes combinaisons.

Nettoyer des données avec R

Générer des paires en R

library(reclin)
pair_blocking(df_A, df_B)
Simple blocking
  No blocking used.
  First data set:  5 records
  Second data set: 5 records
  Total number of pairs: 25 pairs

ldat with 25 rows and 2 columns x y 1 1 1 2 2 1 3 3 1 ...
Nettoyer des données avec R

Trop de paires

Mêmes tables allongées avec davantage de lignes, et encore plus de connexions entre chaque paire.

Nettoyer des données avec R

Blocage

Mêmes tables, mais seules les lignes avec le même État sont reliées.

Ne considérer que les paires qui concordent sur la variable de blocage (State)

Nettoyer des données avec R

Blocage des paires en R

pair_blocking(df_A, df_B, blocking_var = "state")
Simple blocking                                 ldat with 8 rows and 2 columns
  Blocking variable(s): state                     x y
  First data set:  5 records                    1 1 1
  Second data set: 5 records                    2 1 4
  Total number of pairs: 8 pairs                3 2 3
                                                4 2 5
                                                5 3 2
                                                6 4 2
                                                7 5 1
                                                8 5 4
Nettoyer des données avec R

Comparer des paires

Schéma des étapes de record linkage avec l'étape comparer les paires mise en évidence.

Nettoyer des données avec R

Comparer des paires

pair_blocking(df_A, df_B, blocking_var = "state") %>%

compare_pairs(by = "name", default_comparator = lcs())
Compare                                     ldat with 8 rows and 3 columns            
  By: name                                      x y      name
                                              1 1 1 0.3529412
Simple blocking                               2 1 4 0.3030303
  Blocking variable(s): state                 3 2 3 0.9285714
  First data set:  5 records                  4 2 5 0.2962963    
  Second data set: 5 records                  ...
  Total number of pairs: 8 pairs              8 5 4 0.3333333
Nettoyer des données avec R

Comparer plusieurs colonnes

pair_blocking(df_A, df_B, blocking_var = "state") %>%
  compare_pairs(by = c("name", "zip"), default_comparator = lcs())
Compare                                    ldat with 8 rows and 4 columns
  By: name, zip                              x y      name zip
                                           1 1 1 0.3529412 0.4
Simple blocking                            2 1 4 0.3030303 0.2
  Blocking variable(s): state              3 2 3 0.9285714 1.0
  First data set:  5 records               4 2 5 0.2962963 0.2
  Second data set: 5 records               ...
  Total number of pairs: 8 pairs           8 5 4 0.3333333 0.2
Nettoyer des données avec R

Comparateurs différents

  • default_comparator = lcs()
  • default_comparator = jaccard()
  • default_comparator = jaro_winkler()
Nettoyer des données avec R

Passons à la pratique !

Nettoyer des données avec R

Preparing Video For Download...