我有两个数据框,每个数据框都有一列“电子邮件”。数据框A有60K行,B有700行。
我要从A中删除B中的所有电子邮件。
运行此命令并不能满足我的要求。
merge(A, B, "email", all=T)
答案 0 :(得分:2)
使用sqldf
库的一个选项:
library(sqldf)
sql <- "SELECT a.*
FROM A a LEFT JOIN B b
ON a.email = b.email
WHERE b.email IS NULL"
A <- sqldf(sql)
答案 1 :(得分:2)
这是使用基数R的一种方法:
A_new <- A[!(A$email %in% B$email), ]
一个例子如下
> a <- c(1:10, 1:10)
> a <- paste0(a, "@hotmail.com")
> b <- c("2@hotmail.com", "3@hotmail.com", "4@hotmail.com")
> c <- a[!(a %in% b) ]
> c
[1] "1@hotmail.com" "5@hotmail.com" "6@hotmail.com" "7@hotmail.com"
[5] "8@hotmail.com" "9@hotmail.com" "10@hotmail.com" "1@hotmail.com"
[9] "5@hotmail.com" "6@hotmail.com" "7@hotmail.com" "8@hotmail.com"
[13] "9@hotmail.com" "10@hotmail.com"
答案 2 :(得分:1)
dplyr
版本:
anti_join(A, B, by = "email")