R检查电子邮件地址是否有多个客户端ID

时间:2016-09-01 14:42:04

标签: r

如果电子邮件地址在数据框中有多个客户端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的电子邮件地址?

2 个答案:

答案 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