合并R中的两个数据帧并查找公共值和不匹配值

use*_*102 4 r match dataframe

我试图找到一个函数来匹配一个公共列上不同长度的两个数据帧,并创建一个不同的列,指定它是否找到匹配.所以,例如,df1是:

Name Position location
francesca A 75
cristina B 36
Run Code Online (Sandbox Code Playgroud)

而df2是:

location Country
75 UK
56 Austria
Run Code Online (Sandbox Code Playgroud)

我想匹配"位置"和输出是这样的:

Name Position Location Match
francesca A 75 1
cristina B 36 0
Run Code Online (Sandbox Code Playgroud)

我尝试过使用该功能match或使用:

subset(df1, location %in% df2)
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

你能帮我弄明白怎么做吗?

Jas*_*n B 9

尝试:

df1$match <- match(df1$location, df2$location, nomatch=0)
Run Code Online (Sandbox Code Playgroud)

这将向df1添加一列,指示df2中的哪一行与其匹配(仅考虑您指定的位置).如果没有匹配项,则返回零,因此您得到:

> df1
       Name Position location match 
1 francesca        A       75     1
2  cristina        B       36     0
Run Code Online (Sandbox Code Playgroud)

一个警告:如果第二个表中有多个匹配项,您需要使用不同的方法,因为此方法仅返回第一个匹配项.我认为这些是独特的,因为你指定你的问题的方式,所以这不应该是一个问题.