使用“dplyr”根据重复数据和一些附加条件识别重复项

Identify duplicates based on duplicated data and some additional conditions, using `dplyr`

我正在查看这个答案 (Summarize all group values and a conditional subset in the same call),因为它给了我正确的想法(设置 dupe 列),但我需要更多帮助。

所以我的数据结构如下(医疗数据因此尽可能匿名):

指数 姓名 类别 日期 checkup_complete
1 name1 cat1 日期 1 Y
2 name1 cat1 日期 1 N
3 name1 cat2 日期 1 Y
4 name1 cat1 日期 1 Y
5 name1 cat1 日期 2 N
6 name2 cat1 日期 1 Y
7 name3 cat1 日期 2 Y
8 name2 cat2 日期 1 Y
9 name3 cat1 日期 2 N
10 name2 cat2 日期 1 Y
11 name1 cat1 日期 1 N

如果符合以下条件,数据将被视为重复:

对于给定的 category,如果有多个 name 同名,在同一个 datecheckup_complete == “Y”。符合此条件的将折叠为一条记录。

因此基于此,重复项是索引:1 和 4; 8 和 10。索引 2 和 11 重复。

实际的 table 是 000 行中的 10 行,所以有没有办法我可以使用 dplyr(因为我将它用作整体的一部分数据框工作流程)来标记这些是否重复?

基于我上面提供的 link,我感觉我会在 categoryname 上使用 group_bydate 变异 一个 dupe 列。问题是,如果不创建另一列 (cond_dupe) 然后根据 checkup_completedupe 进行过滤,是否有一种一次性完成的方法?

这个有用吗:

df %>% group_by(category, name, date, checkup_complete) %>% filter(if(all(checkup_complete == 'Y')) row_number() == n() else TRUE)
# A tibble: 9 x 5
# Groups:   category, name, date, checkup_complete [8]
  index name  category date  checkup_complete
  <dbl> <chr> <chr>    <chr> <chr>           
1     2 name1 cat1     date1 N               
2     3 name1 cat2     date1 Y               
3     4 name1 cat1     date1 Y               
4     5 name1 cat1     date2 N               
5     6 name2 cat1     date1 Y               
6     7 name3 cat1     date2 Y               
7     9 name3 cat1     date2 N               
8    10 name2 cat2     date1 Y               
9    11 name1 cat1     date1 N