我有一个很大的数据集,其中包含出生日期(“出生日期”)字段,但是经常出现错别字。我正在尝试匹配记录,其中“ 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
答案 0 :(得分:1)
在cost
参数中为substitutions
和max.distance
添加最大容差似乎可以解决问题。
尝试
df %>% filter(agrepl("2011-02-11", dob, max.distance=list(sub=2, cost=2)))