0

我有两个数据框,它们的列都包含文本。现在我想通过在文本列之间使用(不完美)匹配来合并这些数据框。例如,如果数据框 1 的文本列的单元格 1 的文本值包含一个(a 的一部分)单词,该单词类似于数据框 2 的文本列的 cel 2 的文本值中的一个(a 的一部分)单词,然后我希望使用这些单元格合并数据框。在 R 中执行此操作的最佳方法是什么?

我不确定我的问题是否足够清楚,但如果是这样,有没有人知道可以帮助我进行这种合并的 R 包或函数?

提前谢谢了!

4

1 回答 1

1

试试这个RecordLinkage包。

这是一个可能的解决方案,其中合并通常基于两个“单词”匹配的“接近”程度:

library(reshape2)
library(RecordLinkage)
set.seed(16)
l <- LETTERS[1:10]
ex1 <- data.frame(lets = paste(l, l, l, sep = ""), nums = 1:10)
ex2 <- data.frame(lets = paste(sample(l), sample(l), sample(l), sep = ""), 
                  nums = 11:20)
ex1
# lets nums
# 1   AAA    1
# 2   BBB    2
# 3   CCC    3
# 4   DDD    4
# 5   EEE    5
# 6   FFF    6
# 7   GGG    7
# 8   HHH    8
# 9   III    9
# 10  JJJ   10
ex2
# lets nums
# 1   GDJ   11
# 2   CFH   12
# 3   DBE   13
# 4   BED   14
# 5   FJB   15
# 6   JHG   16
# 7   AII   17
# 8   ICC   18
# 9   EGF   19
# 10  HAA   20
lets <- melt(outer(ex1$lets, ex2$lets, FUN = "levenshteinDist"))
lets <- lets[lets$value < 2, ] # adjust the "< 2" as necessary
cbind(ex1[lets$Var1, ], ex2[lets$Var2, ])
# lets nums lets nums
# 9  III    9  AII   17
# 3  CCC    3  ICC   18
# 1  AAA    1  HAA   20
于 2013-08-09T14:08:42.793 回答