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

时间:2014-06-26 19:51:04

标签: 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","C","D"),attribute=c(1:4)) ## county data frame

我想创建一个数据集,对于每行df,包含与物种相关的县级属性。这很容易用匹配完成。

但是,我想从每个县中找出与该县相关的物种。在这种情况下,match()仅返回第一次遇到。我想要归还所有的比赛。例如,对于县A,sp1,sp2和sp3会有一行。

我有一种方法可以使用一个循环来为每个物种设置子集,但它很慢,我想知道是否有更快的方法。感谢您提供任何信息。

1 个答案:

答案 0 :(得分:0)

合并功能应该做你需要的;您可以将其视为SQL或其他数据库查询语言的JOIN操作。

merge(df, County, by='county')

by参数可以通过' c'来接受多个变量。函数,如果要连接的列在数据框架之间不同,则可以使用x和by.y。

除此之外,符号“df'已经被标准函数(F分布的密度函数)使用,这通常很难覆盖。