r - 通过字符串匹配从其他数据框中查找特定值

标签 r dataframe dplyr tidyr

我在下面提到了两个数据框:

DF1

ID     Value
AL-1   Adf "& ert
AL-2   new '? rti
AL-3   oll- drt/
AL-4   plr -rte-

DF2

Value        Type           
Adf & ert    AA
new  rti     AA
oll-drt&     AB
plr-rte      AC

要求的输出:

ID     Value         Type
AL-1   Adf "& ert    AA
AL-2   new '? rti    AA
AL-3   oll- drt/     AB
AL-4   plr -rte-     AC

我想将 Value 列中 DF1 的字符与 DF2 Value 列中的字符进行匹配,并导出 Type

尝试使用拼音库但还没有完成,需要一些建议。

最佳答案

您可以使用 adist 函数为 df1$Valuedf2$Value< 中的每个值获取字符串之间的近似“距离”/。然后你可以取最小距离的那个(所以精确匹配将被优先考虑):

library(utils)
df1$Type <- df2$Type[apply(adist(df1$Value, df2$Value), 1, which.min)]

df1
#    ID      Value Type
#1 AL-1 Adf "& ert   AA
#2 AL-2 new '? rti   AA
#3 AL-3  oll- drt/   AB
#4 AL-4  plr -rte-   AC

关于r - 通过字符串匹配从其他数据框中查找特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50121776/

相关文章:

r - 过滤每组中间行

r - 将数据框从每列的最小值扩展到最大值

r - 如何使用 dplyr 计算两个分组变量的加权平均值

r - 将 lm 添加到 ggplot2 中的日期时间数据时出错

r - 将任意格式的字符串转换成dd-mm-yy hh :mm:ss in R

python - 有效地逐行比较两列中的列表

python - 如何为 Pandas 中的多个变量按列创建所有组合?

r - 如何在 R 中保存分层 pdf(通过 Sweave?)

r - as.Date 如果申请或不申请则返回不同的格式

r - 如何将多个列表列表组合成一个数据框