Учитывая некоторые данные, подобные этому:
df<-data.frame(x=c('john doe','john smith','sally struthers'),y=c('John Smith','John_smith','JonSmith'))
Вы можете пройти долгий путь с несколькими gsub
с и tolower
:
df$y.fix <- gsub('[[:punct:]]', ' ', df$y)
df$y.fix <- gsub(' ', '', df$y.fix)
df$y.fix <- tolower(df$y.fix)
df$x.fix <- tolower(gsub(' ', '', df$x))
Тогда agrep
- это то, что вам нужно:
> agrep(df$x.fix[2], df$y.fix)
[1] 1 2 3
для более сложных запутанных строк, смотрите это сообщение с прошлой недели .