如何根据相关条件在dplyr中进行过滤

use*_*015 4 r dplyr

我有一个数据框.我想仅在与特定组关联的情况下过滤掉一些问题.

对于一个虚拟示例,假设我有以下内容:

> mydf
   Group Issue
1      A     G
2      A     H
3      A     L
4      B     V
5      B     M
6      C     G
7      C     H
8      C     L
9      C     X
10     D     G
11     D     H
12     D     I
Run Code Online (Sandbox Code Playgroud)

如果该组中还存在"L"问题,我想过滤出带有"G"或"H"或"L"问题的行.

所以在这种情况下,我想过滤出行1,2,3,6,7,8但是留下行4,5,9,10,11和12.因此结果将是:

> mydf
   Group Issue
4      B     V
5      B     M
9      C     X
10     D     G
11     D     H
12     D     I
Run Code Online (Sandbox Code Playgroud)

我想我首先需要,group_by(Group)但后来我想知道最好的方法是什么.

谢谢!

Fra*_*ank 6

如果规则是

当一个组包含L时,丢弃L,G和H.

然后

mydf %>% 
  group_by(Group) %>% 
  filter( if (any(Issue=="L")) !(Issue %in% c("G","H","L")) else TRUE )

#   Group Issue
# 1     B     V
# 2     B     M
# 3     C     X
# 4     D     G
# 5     D     H
# 6     D     I
Run Code Online (Sandbox Code Playgroud)

  • 或者`df%>%group_by(Group)%>%filter(!(any(Issue =="L")&(在%c中发出%("G","H","L")))) (6认同)