我试图找到一个函数来匹配一个公共列上不同长度的两个数据帧,并创建一个不同的列,指定它是否找到匹配。 所以,例如, df1是:
Name Position location
francesca A 75
cristina B 36
而df2是:
location Country
75 UK
56 Austria
我想在“位置”上匹配,输出就像:
Name Position Location Match
francesca A 75 1
cristina B 36 0
我尝试使用函数match
或使用:
subset(df1, location %in% df2)
但它不起作用。
你能帮我弄明白怎么做吗?
答案 0 :(得分:9)
尝试:
df1$match <- match(df1$location, df2$location, nomatch=0)
这将向df1添加一列,指示df2中的哪一行与其匹配(仅考虑您指定的位置)。如果没有匹配项,则返回零,因此您得到:
> df1
Name Position location match
1 francesca A 75 1
2 cristina B 36 0
一个警告:如果第二个表中有多个匹配项,您需要使用不同的方法,因为此方法仅返回第一个匹配项。我认为这些是独一无二的,因为你指定问题的方式,所以这应该不是问题。