Нечеткие совпадения - PullRequest
0 голосов
/ 13 мая 2019

У меня есть большой набор данных, который включает в себя поле даты рождения («dob»), но есть частые опечатки. Я пытаюсь сопоставить записи, где "dob" может быть отключен на одну или две цифры. Я не пытаюсь искать даты, близкие к «dob» (например, difftime), потому что они могут быть опечатками в части года или месяца. Я думаю, что agrep - это правильный инструмент, поскольку вы можете сопоставлять замены, но не можете заставить его работать так, как я хочу.

Код, с которым я пытался сопоставить даты

df <- data.frame(dob = c(as.Date("2018-01-01"), as.Date("2015-05-05"), as.Date("2011-11-11")))
df %>% filter(agrepl("2011-11-10", dob, max.distance=list(sub=2)))

возвращает строку с 2011-11-11, как я и ожидал. Однако он возвращает совпадения только в том случае, если дата на одну цифру выключена. Даже если я установлю sub=5, результаты, похоже, не изменятся. Я хочу совпадения, где до двух цифр могут быть неправильными. например,

df %>% filter(agrepl("2011-02-11", dob, max.distance=list(sub=2)))

все равно вернется 2011-11-11

1 Ответ

1 голос
/ 13 мая 2019

Добавление максимального допуска для cost вместе с substitutions в аргументе max.distance, кажется, помогает.

Попробуйте

df %>% filter(agrepl("2011-02-11", dob, max.distance=list(sub=2, cost=2)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...