模糊匹配数字

时间:2019-05-13 11:49:55

标签: r

我有一个很大的数据集,其中包含出生日期(“出生日期”)字段,但是经常出现错别字。我正在尝试匹配记录,其中“ 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 个答案:

答案 0 :(得分:1)

cost参数中为substitutionsmax.distance添加最大容差似乎可以解决问题。

尝试

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