Я работаю с двумя наборами данных (набор данных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
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"