如何将R中的一列中的元素与其他列中的元素进行匹配?

如何将R中的一列中的元素与其他列中的元素进行匹配?,r,string-matching,R,String Matching,我试图将字符串元素从一列匹配到另一列,并在它们之间建立某种链接。考虑以下事项: 数据库1,a列: Student name Napoleon Dynamite Drake Graham Michael Jordan Napoleon M Drake H Michael G 数据库2,a列: Student name Napoleon Dynamite Drake Graham Michael Jordan Napoleon M Drake H Michael G 数据库2,b列: Dyn

我试图将字符串元素从一列匹配到另一列,并在它们之间建立某种链接。考虑以下事项:

数据库1,a列:

Student name
Napoleon Dynamite
Drake Graham
Michael Jordan
Napoleon M
Drake H
Michael G
数据库2,a列:

Student name
Napoleon Dynamite
Drake Graham
Michael Jordan
Napoleon M
Drake H
Michael G
数据库2,b列:

Dynamite
Graham
Jordan

我要做的是将数据库1中的a列与数据库2中的a列和b列进行匹配。正如您所看到的,这些列并不完全匹配。我尝试使用agrep函数()来实现这一点,但是我仍然不完全理解它是如何工作的。

如果唯一的区别是添加了中间的首字母,那么有简单的解决方案。但如果名字拼写错误或其他复杂因素,近似匹配是唯一的方法。您会在第二个数据库中遇到类似于
Nuhpolean
的情况吗?不会,但是我可能会找到以下示例:Chilli's和Chilli's。这就是为什么我认为使用近似匹配
sapply(1:nrow(db1),function(x)agrep(db1[x,],do.call(paste,db2))
是一个好主意:Error in
[.default
(data$valor,x,):维度数不正确。在我的实际案例中,db1和db2不是相同的维度。db2有多个重复的名称,而db1只是所有名称的索引,没有一个重复。这样做:在您的问题中发布
dput(head(db1,20))
dput(head(db2,20))的输出
其中db1和db2是您的“数据库”“。如果唯一的区别是添加了中间首字母,则有简单的解决方案。但如果名称拼写错误或其他复杂因素,则近似匹配是唯一的方法。您会在第二个数据库中遇到类似于
Nuhpolean
的情况吗?不会,但我可能会找到以下示例:Chilli's和Chilli's“这就是为什么我认为使用近似匹配是个好主意(1:nrow(db1),函数(x)agrep(db1[x,],do.call(paste,db2))我得到以下信息:
[.default
(数据$valor,x,):维度数不正确。在我的实际案例中,db1和db2不是相同的维度。db2有多个重复的名称,而db1只是所有名称的索引,没有一个重复。这样做:在问题中发布
dput(head(db1,20))
dput(head(db2,20))的输出
其中,db1和db2是您的“数据库”。