我有两个数据帧
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
答案 0 :(得分:5)
一个选项是agrep
。根据{{1}}
使用广义的Levenshtein编辑距离(将一个字符串转换为x所需的最小加权插入,删除和替换次数)在字符串x(第二个参数)的每个元素内搜索与模式(第一个参数)的近似匹配另一个)。
我们遍历'df1'中的'Word1'元素,应用agrep
,获取'df2'的相应元素,'Word2'列,并通过检查{ {1}}。最后,将agrep
的{{1}}中的length
变成一个
rbind