如何识别唯一 ID 和 R 中两个数据集的重叠

How to identify unique IDs and the overlap of two datasets in R

我正在处理两个数据集(数据集 1 和数据集 2),它们都包含大量客户电子邮件。 我想匹配识别每个数据集中哪些电子邮件是唯一的,哪些是“重叠”的(在两个数据集中都观察到)。我想以 3 个数据集结束:

这里有一个再现性的例子:

dataset1 <- data.frame(email = c("A", "B", "C", "D", "E" ))
dataset2 <- data.frame(email = c("X", "Y", "Z", "D", "E" ))

结果应该是:

谢谢!

您可以使用 %in% :

result1 <- subset(dataset1, !email %in% dataset2$email)
result1

#  email
#1     A
#2     B
#3     C

result2 <- subset(dataset2, !email %in% dataset1$email)
result2

#  email
#1     X
#2     Y
#3     Z

result3 <- subset(dataset1, email %in% dataset2$email)
result3

#  email
#4     D
#5     E

也可以使用 tidyverse 中的过滤连接

library(tidyverse)

dataset1 <- data.frame(email = c("A", "B", "C", "D", "E" ))
dataset2 <- data.frame(email = c("X", "Y", "Z", "D", "E" ))



anti_join(dataset1, dataset2)


anti_join(dataset2, dataset1)


semi_join(dataset1, dataset2)

您可以使用 setdiff 求差,使用 intersect 求数据集的交集:

setdiff(dataset1$email, dataset2$email)
#[1] "A" "B" "C"
setdiff(dataset2$email, dataset1$email)
#[1] "X" "Y" "Z"
intersect(dataset1$email, dataset2$email)
#[1] "D" "E"