В настоящее время я работаю над фреймом данных с 2 миллионами строк (записей).Я хочу определить возможные повторяющиеся записи для последующего наблюдения.Кто-то другой написал для меня длинный код, который работает, но в настоящее время он занимает одну ночь, чтобы запустить.
Используется пакет stringdist
.Из того, что я понимаю, stringdist
работает путем сравнения одной строки со всеми другими строками во фрейме данных.Таким образом, для фрейма данных с 5 строками потребуется 20 вычислений:
, т.е.строка 1 по сравнению со строкой 2строка 1 по сравнению с строкой 3строка 1 по сравнению с строкой 4строка 1 по сравнению с строкой 5строка 2 по сравнению со строкой 1строка 2 по сравнению с строкой 3строка 2 по сравнению с строкой 4строка 2 по сравнению с строкой 5строка 3 по сравнению со строкой 1строка 3 по сравнению со строкой 2строка 3 по сравнению с строкой 4строка 3 по сравнению с строкой 5строка 4 по сравнению с строкой 1строка 4 по сравнению со строкой 2строка 4 по сравнению с строкой 3строка 4 по сравнению с строкой 5строка 5 по сравнению с строкой 1строка 5 по сравнению со строкой 2строка 5 по сравнению с строкой 3строка 5 по сравнению с строкой 4
Увеличение размера фрейма данных экспоненциально увеличит время, необходимое для завершения функции.С моим довольно большим фреймом данных, очевидно, это занимает некоторое время
Мое предлагаемое решение заключается в следующем: после сравнения каждой строки со всеми другими строками во фрейме данных, есть ли способ пропустить эти строки в будущих вычислениях?Например, в приведенном выше примере строка 1 по сравнению со строкой 2 будет такой же, как строка 2 по сравнению со строкой 1. Можем ли мы удалить один из этих вычислений?
Таким образом, используя приведенный выше примерный фрейм данных, единственными вычислениями должны быть:
строка 1 по сравнению со строкой 2строка 1 по сравнению с строкой 3строка 1 по сравнению с строкой 4строка 1 по сравнению с строкой 5строка 2 по сравнению с строкой 3строка 2 по сравнению с строкой 4строка 2 по сравнению с строкой 5строка 3 по сравнению с строкой 4строка 3 по сравнению с строкой 5строка 4 по сравнению с строкой 5
Это раздел функции в коде, который ищет эти дубликаты в различных столбцах - есть идеи, как я могу это исправить?
lastName <- stringdist(DataND$SURNAME[rownumber],DataND$SURNAME, method='lv')
firstName <- stringdist(DataND$GIVEN.NAME[rownumber],DataND$GIVEN.NAME, method='lv')
birthDate <- stringdist(DataND$DOB[rownumber],DataND$DOB, method='lv')
streetAddress<-stringdist(DataND$ADDR.1[rownumber],DataND$ADDR.1, method='lv')
suburb <- stringdist(DataND$LOCALITY[rownumber],DataND$LOCALITY, method='lv')