我想根据多个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))
有什么想法吗?
答案 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"