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

Cor*_*ryB 1 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
Run Code Online (Sandbox Code Playgroud)

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

输出看起来像这样:2

由于x和z是两组之间的唯一匹配.

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

df1.2 <- df2[df2$KeyID %in% df1$KeyID,]
length(unique(df1.2$KeyID))
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

tkm*_*zie 7

你可以设置交集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
Run Code Online (Sandbox Code Playgroud)

编辑:根据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"
Run Code Online (Sandbox Code Playgroud)