r 根据列中的值过滤重复行

r filter duplicate rows based on value in column

我有这样的数据集

  Id    Date      Col1   Col2   Col3
  1     1/1/1995  NA     1      A
  1     5/3/1887  2      2      B
  2     3/10/1992 0      1      B
  3     8/15/2002 1      1      B

我喜欢 select 行,其中 Col3=A 仅当行为该 ID 重复时

预期数据集

Id    Date      Col1   Col2   Col3
  1     1/1/1995  NA     1      A
  
  2     3/10/1992 0      1      B
  3     8/15/2002 1      1      B

我试过了

 df %>%
   group_by(Id)%>%
     filter(Col3 == "A")

这不符合我的预期。我只得到一行 ID=1 和 Col3=A,这不是我所期望的。非常感谢任何关于我哪里出错的建议。提前致谢。

这里有一个选项

df %>%
    group_by(Id) %>%
    filter(Col3 == "A" | n() == 1) %>%
    ungroup()
## A tibble: 3 x 5
#     Id Date       Col1  Col2 Col3 
#  <int> <chr>     <int> <int> <chr>
#1     1 1/1/1995     NA     1 A    
#2     2 3/10/1992     0     1 B    
#3     3 8/15/2002     1     1 B    

这会保留 Col3 == "A" 所在的行或每组保留一行。 PS。我建议始终使用 ungroup() 以避免下游出现不必要的意外。