Я пытаюсь создать уникальный столбец идентификатора, используя пакет RecordLinkage. Я успешно это сделал при работе с меньшими наборами данных (< = 1,000,000), но не смог воспроизвести этот результат для более крупных наборов данных (> 1,000,000), которые используют разные (но похожие) функции в пакете. Мне даны несколько переменных идентификатора, для которых я хочу создать уникальный идентификатор, несмотря на то, что могут быть некоторые ошибки (близкие совпадения) или дубликаты в записях.Создание уникального столбца идентификатора для большого набора данных с пакетом RecordLinkage
Учитывая некоторый кадр данных идентификаторов:
data(RLdata500)
df_identifiers <- RLdata500
Это код для меньших datesets (которые работают):
df_identifiers <- df_identifiers %>% mutate(ID = 1:nrow(df_identifiers))
rpairs <- compare.dedup(df_identifiers)
p=epiWeights(rpairs)
classify <- epiClassify(p,0.3)
matches <- getPairs(object = classify, show = "links", single.rows = TRUE)
# this code writes an "ID" column that is the same for similar identifiers
classify <- matches %>% arrange(ID.1) %>% filter(!duplicated(ID.2))
df_identifiers$ID_prior <- df_identifiers$ID
# merge matching information with the original data
df_identifiers <- left_join(df_identifiers, matches %>% select(ID.1,ID.2), by=c("ID"="ID.2"))
# replace matches in ID with the thing they match with from ID.1
df_identifiers$ID <- ifelse(is.na(df_identifiers$ID.1), df_identifiers$ID, df_identifiers$ID.1)
Этот подход обсуждается here. Но при использовании других функций этот код не может быть расширяемым при применении к более крупным наборам данных. Например, большой эквивалент данных compare.dedup
является RLBigDataDedup
, чья RLBigData
поддержка класса аналогичных функций, таких как epiWeights
, epiClassify
, getPairs
и т.д. Замены compare.dedup
с RLBigDataDedup
не работает в этой ситуации.
Рассмотрим следующую попытку для больших наборов данных:
df_identifiers <- df_identifiers %>% mutate(ID = 1:nrow(df_identifiers))
rpairs <- RLBigDataDedup(df_identifiers)
p=epiWeights(rpairs)
(. . .)
Здесь, оставшийся код почти идентичен первому. Хотя epiWeights
и epiClassify
работают над классом RLBigData
, как и ожидалось, getPairs
нет. Функция getPairs
не использует аргумент show = "links"
. Из-за этого весь последующий код не работает.
Есть ли другой подход, который необходимо предпринять для создания столбца уникальных идентификаторов при работе с более крупными наборами данных в классе RLBigData
, или это просто ограничение?