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

时间:2015-06-26 02:11:37

标签: 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

我想过滤出" G"或" H"或" L"问题,如果还有一个" 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

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

谢谢!

1 个答案:

答案 0 :(得分:6)

如果规则是

  

当一组包含L时,丢弃L,G&小时。

然后

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