计算来自两个不同数据帧的相似发音词的数量和名称

时间:2019-08-20 17:43:36

标签: r

我有两个数据帧

    Word1<-c("bat", "ban", "bait")
    df1<-data.frame(Word1,  stringsAsFactors=FALSE)

    Word2<-c("cat", "cab", "ban", "at", "done", "dot", "ran", "cant")
    df2<-data.frame(Word2,  stringsAsFactors=FALSE)

我想使用df2中的单词来计算df1中单词的levenshtein距离

我想要这样的东西:

    Word1<-c("bat", "ban", "bait")
    links<-c("cat, ban, at", "ran","")
    counts<-c("3","1","0")
    df3<-data.frame(Word1, links, counts,  stringsAsFactors=FALSE)

它与我先前的计算问题相似,但需要两个单独的数据帧。这是问题的链接:

calculate number and names of similar sounding words from a data frame

1 个答案:

答案 0 :(得分:5)

一个选项是agrep。根据{{​​1}}

的描述
  

使用广义的Levenshtein编辑距离(将一个字符串转换为x所需的最小加权插入,删除和替换次数)在字符串x(第二个参数)的每个元素内搜索与模式(第一个参数)的近似匹配另一个)。

我们遍历'df1'中的'Word1'元素,应用agrep,获取'df2'的相应元素,'Word2'列,并通过检查{ {1}}。最后,将agrep的{​​{1}}中的length变成一个

rbind