我有一个程序参与者的数据集,我想删除参与两个(或更多)不同程序的客户。我尝试通过选择具有不同ID的客户端和在同一程序中多次参与的客户端来解决此任务,然后希望加入这两个子集,但我一直都在失败。以下是我对小样本的尝试:
Client.ID = c(1, 2, 2, 3, 3)
Program = c("P1", "P2", "P2", "P1", "P2")
From = as.Date(c("2016-10-01", "2016-01-25", "2016-07-01", "2016-04-06", "2016-05-01"))
To = as.Date(c("2017-03-31", "2016-06-30", "2016-11-27", "2016-06-03", "2016-06-02"))
df = tibble(Client.ID, Program, From, To)
df
# A tibble: 5 x 4
Client.ID Program From To
<dbl> <chr> <date> <date>
1 1 P1 2016-10-01 2017-03-31
2 2 P2 2016-01-25 2016-06-30
3 2 P2 2016-07-01 2016-11-27
4 3 P1 2016-04-06 2016-06-03
5 3 P2 2016-05-01 2016-06-02
distinct(df, Client.ID, .keep_all = TRUE) #this selects distinct cases nicely
df[duplicated(df$Client.ID) & !duplicated(df$Program),] #but this does not work
我试着在论坛上查看其他问题,但我只找到了基于两个变量来处理重复的问题,例如here和here。我想做其他事情:删除第一个变量中重复的案例,但在第二个变量中有不同的值。多次参与同一计划的客户应留在数据集中。
非常感谢您的帮助!
答案 0 :(得分:1)
library(dplyr)
:
df %>% group_by(Client.ID) %>%
filter(length(unique(Program)) < 2 )
答案 1 :(得分:0)
这是一个基础R版本:
Treeview
单词中,找到唯一对并删除“Client.ID”的重复项。