【问题标题】:Match strings with fuzzy join where max 1 chr is different使用最多 1 个字符不同的模糊连接匹配字符串
【发布时间】:2020-12-23 22:13:08
【问题描述】:

有没有办法检测两个字符串是否只有 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,但这仅在不同的字符位于开头或结尾(“summer”和“summe”)时才有效。但是,我想得到

      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

感谢任何建议!

【问题讨论】:

    标签: r string character


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2012-02-14
      • 2014-11-02
      • 1970-01-01
      • 2017-08-03
      • 2014-03-04
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 2021-04-19
      相关资源
      最近更新 更多