Генерация и сравнение пар

Очистка данных в R

Maggie Matsui

Content Developer @ DataCamp

Когда объединения не работают

Левая таблица содержит столбцы event и time. Показаны матчи: Houston Rockets vs Chicago Bulls в 19:00, Miami Heat vs Los Angeles Lakers в 19:00, Brooklyn Nets vs Orlando Magic в 20:00, Denver Nuggets vs. Miami Heat в 21:00, San Antonio Spurs vs Atlanta Hawks в 21:00. Правая таблица содержит матчи: NBA: Nets vs Magic в 20:00, NBA: Bulls vs Rockets в 21:00, NBA: Heat vs Lakers в 19:00, NBA: Grizzlies vs Heat в 22:00, NBA: Heat vs Cavaliers в 21:00.

Очистка данных в R

Когда объединения не работают

Очистка данных в R

Что такое связывание записей?

record_linkage_1.png

Очистка данных в R

Что такое связывание записей?

Слева — две базы данных с мётлами, обозначенные Data A и Data B

Очистка данных в R

Что такое связывание записей?

Стрелки от Data A и Data B указывают на три пары людей, этап обозначен как «Генерация пар»

Очистка данных в R

Что такое связывание записей?

Стрелка от этапа генерации пар указывает на два столбца кружков со стрелками в разных направлениях. Этап обозначен как «Сравнение пар».

Очистка данных в R

Что такое связывание записей?

Стрелка от этапа сравнения пар указывает на фигуру человека с табличкой .93. Этап обозначен как «Оценка пар».

Очистка данных в R

Что такое связывание записей?

Стрелка от этапа оценки пар указывает на цепочку, обозначенную как «Связывание данных».

Очистка данных в R

Что такое связывание записей?

Та же схема с синей рамкой вокруг этапа генерации пар

Очистка данных в R

Пары записей

Две таблицы, df_A и df_B, содержащие имена людей, почтовые индексы и штат. В df_A выделена строка Keaton Z Snyder, индекс 15020, штат PA. В df_B выделена строка Keaton Snyder, индекс 15020, штат PA.

Очистка данных в R

Генерация пар

Те же таблицы, где линии соединяют каждую строку df_A с каждой строкой df_B, показывая все возможные комбинации.

Очистка данных в R

Генерация пар в 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 ...
Очистка данных в R

Слишком много пар

Те же таблицы, расширенные вниз, с ещё большим количеством строк и линий, соединяющих каждую пару.

Очистка данных в R

Блокировка

Те же таблицы, но линиями соединены только строки с одинаковым штатом.

Рассматриваются только пары, совпадающие по блокирующей переменной (штат)

Очистка данных в R

Блокировка пар в 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
Очистка данных в R

Сравнение пар

Схема этапов связывания записей с выделенным шагом сравнения пар.

Очистка данных в R

Сравнение пар

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
Очистка данных в R

Сравнение нескольких столбцов

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
Очистка данных в R

Различные компараторы

  • default_comparator = lcs()
  • default_comparator = jaccard()
  • default_comparator = jaro_winkler()
Очистка данных в R

Давайте потренируемся!

Очистка данных в R

Preparing Video For Download...