R通过部分匹配合并2个表/数据帧

R通过部分匹配合并2个表/数据帧,r,merge,R,Merge,我有两个表/数据帧。 第一个表(ID)如下所示: 第二个表(名称)如下所示: 我想将“IDTag”变量与“Name”变量的前几个字母匹配。在其他编程语言中,我会对第二个表的每一行执行foreach并运行每个IDTag(将IDTag与“Name”变量的前n个字符相匹配),其中n是相关IDTag的字符数 在R中,似乎应该有一种方法来实现这一点,我已经研究了pmatch和其他一些方法,但这些方法要么根本不匹配,要么在我尝试使用它们时,在我没有预料到的地方提出了几个NAs(使用上面表数据的示例代码:

我有两个表/数据帧。
第一个表(ID)如下所示:

第二个表(名称)如下所示:

我想将“IDTag”变量与“Name”变量的前几个字母匹配。在其他编程语言中,我会对第二个表的每一行执行foreach并运行每个IDTag(将IDTag与“Name”变量的前n个字符相匹配),其中n是相关IDTag的字符数

在R中,似乎应该有一种方法来实现这一点,我已经研究了pmatch和其他一些方法,但这些方法要么根本不匹配,要么在我尝试使用它们时,在我没有预料到的地方提出了几个NAs(使用上面表数据的示例代码:

NameMatches <- Names[pmatch(
                  ID$IDTag,
                  Names$Name,
                  duplicates.ok = TRUE
                ),]

NameMatches如果您愿意使用
sqldf
包,那么一个选项就是使用您提供的逻辑编写一个连接:

library(sqldf)
sql <- "SELECT * FROM ID t1 INNER JOIN Names t2
        ON t2.Name LIKE t1.IDTag || '%'"

output <- sqldf(sql)
库(sqldf)

sql要么创建一个包含前几个字母的新列,要么使用类似的内容。您期望的输出是什么样子的?您怎么能期望一个答案而不至少向我们显示这一点?另外,例如,我看到“AB2”匹配两次??输出是什么?