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

时间:2014-07-30 19:39:04

标签: 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

我想计算数据帧之间唯一匹配的数量。

输出看起来像这样:  2

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

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

您可以与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

编辑:根据akrun的建议调整问题编辑,如果有多个向量,

v1 <- c("x", "x", "y", "y", "z")
v2 <- c("x", "x", "x", "z", "z")
v3 <- c("x", "y", "y", "z")
vector.list <- list(v1, v2, v3)

Reduce("intersect", vector.list)
# [1] "x" "z"