R 两个数据帧之间的多重匹配

R 两个数据帧之间的多重匹配,r,matching,R,Matching,我有两个数据帧。一个包含县中的物种发生情况,第二个包含每个县的属性。下面是一个玩具数据集示例 species = c(rep("sp1",4),rep("sp2",3),rep("sp3",2)) ## species name county = c("A","B","C","D","A","B","c","A","B") ## county occurrence df=data.frame(species,county) County=data.frame(county=c("A","B",

我有两个数据帧。一个包含县中的物种发生情况,第二个包含每个县的属性。下面是一个玩具数据集示例

species = c(rep("sp1",4),rep("sp2",3),rep("sp3",2)) ## species name
county = c("A","B","C","D","A","B","c","A","B") ## county occurrence
df=data.frame(species,county) 
County=data.frame(county=c("A","B","C","D"),attribute=c(1:4)) ## county data frame
我想创建一个数据集,其中包含与物种相关的每一行df的县级属性。用match很容易做到这一点

然而,我想找出每个县与df县相关的物种。在本例中,match()只返回第一次相遇。我想归还所有的火柴。例如,对于县A,sp1、sp2和sp3将有一行


我有一种方法可以通过一个循环来完成这项工作,这个循环可以为每个物种提供子集,但是速度很慢,我想知道是否有一种更快的方法。谢谢您提供的任何信息。

合并功能应该可以满足您的需要;您可以将其视为来自SQL或其他数据库查询语言的联接操作

merge(df, County, by='county')
by参数可以通过“c”函数接受多个变量,如果要连接的列在数据帧之间不同,则可以使用by.x和by.y

另一方面,符号“df”已经被标准函数(F分布的密度函数)使用,这通常不利于覆盖