我有两个数据集:
data1
就像
id name
1 1 toyota
2 2 walmart
3 3 fox ad company
data2
就像
id name
1 1 sales walmart
2 2 fox advertisement company
3 3 metro toyota
在这个实例中考虑我们希望以data2的名字找到data1的所有名称。
如何做到这一点?如果我们在data1和data2之间找到匹配项,我们将打印data1的id。
例如:
id name data2
1 1 toyota 3
2 2 walmart 1
3 3 fox ad company 2
答案 0 :(得分:7)
假设你有:
one <- c("toyota","walmart","fox ad company")
two <- c("sales walmart","fox advertisement company","metro toyota")
您可以使用adist
计算的最小字符串距离提取匹配项。这可能是错误的,但它会给你一个开始。请参阅?adist
,了解如何编辑此内容,仅查看字符的添加,替换或插入。
max.col(-adist(one,two))
#[1] 3 1 2
匹配好了:
data.frame(one, two=two[max.col(-adist(one,two))])
# one two
#1 toyota metro toyota
#2 walmart sales walmart
#3 fox ad company fox advertisement company