如果电子邮件地址在数据框中有多个客户端ID,我想检查R.
client_ID email
1 a@a.com
2 a@a.com
3 b@b.com
3 b@b.com
结果我正在寻找(a@a.com有多个ID):
client_ID email
1 a@a.com
2 a@a.com
如何选择包含多个客户端ID的电子邮件地址?
答案 0 :(得分:1)
假设df
是您的data.frame并且看起来像这样
> df
client_ID email
1 1 a@a.com
2 2 a@a.com
3 3 b@b.com
4 3 b@b.com
然后,一个可能的解决方案可能是......
> result <- lapply(split(df, df$email), function(x) x[all(!duplicated(x$client_ID))] )
> result <- data.frame(result)
> names(result) <- names(df)
> result
client_ID email
1 1 a@a.com
2 2 a@a.com
答案 1 :(得分:0)
我们也可以使用data.table
执行此操作。转换&#39; data.frame&#39;到&#39; data.table&#39; (setDT(df1)
),按&#39;电子邮件&#39;,if
length
unique
个号码&#39; client_ID&#39;大于1,我们得到Data.table的子集。
library(data.table)
setDT(df1)[, if(uniqueN(client_ID) > 1) .SD, email]
# email client_ID
#1: a@a.com 1
#2: a@a.com 2