R:计算多个数据帧之间的匹配数

R:计算多个数据帧之间的匹配数,r,unique,R,Unique,我想根据多个data.frames中唯一匹配的ID查找匹配数 数据如下所示: df1: KeyID x x y y z df2: KeyID x x x z z df3: KeyID x y y z 我想计算数据帧之间唯一匹配的数量 输出如下所示: 二, 因为x和z是两组之间唯一的匹配项 我已经这

我想根据多个data.frames中唯一匹配的ID查找匹配数

数据如下所示:

df1: KeyID
       x
       x
       y
       y
       z

df2: KeyID
       x
       x
       x
       z
       z

df3: KeyID
       x
       y
       y
       z
我想计算数据帧之间唯一匹配的数量

输出如下所示: 二,

因为x和z是两组之间唯一的匹配项

我已经这样做了,但想知道是否有更快的方法:

df1.2 <- df2[df2$KeyID %in% df1$KeyID,]
length(unique(df1.2$KeyID))

df1.2您可以使用
intersect
设置交点:

v1 <- c("x", "x", "y", "y", "z")
v2 <- c("x", "x", "x", "z", "z")
intersect(v1, v2)
# [1] "x" "z"
length(intersect(v1, v2))
# [1] 2

v1您可以使用
intersect
设置交点:

v1 <- c("x", "x", "y", "y", "z")
v2 <- c("x", "x", "x", "z", "z")
intersect(v1, v2)
# [1] "x" "z"
length(intersect(v1, v2))
# [1] 2

v1这不就是
sum(unique(df1$KeyID)%in%unique(df2$KeyID))
?事实上,现在我想得更多了,如果它们是因子,您可能需要将
包装为.character
。@BondedDust仅当位置不重要时。。。目前,很难说出询问者想要什么…位置并不重要…只想知道两个数据帧中,或dfs 1、2、3等中有多少个KeyID。您提到了多个数据集/向量。如果超过两个:
Reduce(“intersect”,listofvectors)
@akrun是包的Reduce部分吗?这不就是
sum吗(唯一(df1$KeyID)%in%unique(df2$KeyID))
?事实上,现在我想得更多了,如果它们是因子,您可能需要将
包装为.character
。@BondedDust仅当位置不重要时。。。目前,很难说出询问者想要什么…位置并不重要…只想知道两个数据帧中,或dfs 1、2、3等中有多少个密钥ID。您提到了多个数据集/向量。如果超过两个:
Reduce(“intersect”,listofvectors)
@akrun是包的Reduce部分吗,只有在位置不重要的情况下。@CoryB查看上面阿克伦的评论。同样,只有在位置不重要的情况下。@CoryB查看上面阿克伦的评论。