Сопоставление строк с нечетким соединением, где max 1 chr отличается

#r #string #character

#r #строка #символ

Вопрос:

Есть ли способ определить, содержат ли две строки только от 1 до 0 разных символов?

Воспроизводимый пример:

 library(fuzzyjoin)
library(stringr)
  
df1 <- data.frame(x = c("howaryou", "hello", "summer", "goodbye"), y = c(1:4))
df2 <- data.frame(x = c("howareyou", "heelo", "summe", "goodbye"), z = c(66:69))

fuzzy_left_join(df1, df2, match_fun = str_detect, by = "x")
      x.x y     x.y  z
1 howaryou 1    <NA> NA
2    hello 2    <NA> NA
3   summer 3   summe 68
4  goodbye 4 goodbye 69
 

Я пытался str_detect , но это работает только в том случае, если другой chr находится в начале или в конце («лето» и «сумма»). Тем не менее, я хотел бы получить

       x.x y     x.y    z
1 howaryou 1 howareyou 66
2    hello 2     heelo 67
3   summer 3     summe 68
4  goodbye 4   goodbye 69
 

Я ценю любые предложения!

Ответ №1:

stringdist может быть вариант

 library(fuzzyjoin)
stringdist_left_join(df1, df2, by = 'x')
 

-вывод

 #      x.x y       x.y  z
#1 howaryou 1 howareyou 66
#2    hello 2     heelo 67
#3   summer 3     summe 68
#4  goodbye 4   goodbye 69