首页 > 解决方案 > 比较数据帧之间的字符串

问题描述

我希望了解 R 中函数或工具的可行性和任何建议,以遍历一个数据帧中的列并逐个字符串比较来自另一个数据帧的列中的每个字符串。

这个想法是在另一个数据框中寻找“可能的匹配”时为每个字符串分配一个“是/否/可能”(可能存在拼写错误或输入错误......我只是想缩小搜索范围火柴)

这是R可以很好地处理的事情吗?

标签: rstringdataframecomparison

解决方案


欢迎来到堆栈溢出!有一个称为adist计算两个字符串之间的 Levenshtien 编辑距离的函数(请参见此处的类似问题)。

在不知道您的具体用例的情况下,我们可以举一个例子:

df <- data.frame(a = c('comparing', 'strings', 'between', 'dataframes'),
                 b = c('comparing', 'integers', 'between', 'data.frames'),
                 stringsAsFactors = F)

df$levenshtein <- mapply(adist, df$a, df$b)
df$ismatch <- 'maybe'
df$ismatch[df$levenshtein == 0] <- 'yes'
df$ismatch[df$levenshtein >= 3] <- 'no'

df
# gives:
           a           b levenshtein ismatch
1  comparing   comparing           0     yes
2    strings    integers           6      no
3    between     between           0     yes
4 dataframes data.frames           1   maybe

当然,您可以更改'maybe'答案的范围。


推荐阅读