我想根据多个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)
有什么想法吗?
你可以设置交集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)