How to filter every row of the same character if one attend the condition

Suppose I have the following dataset test

> test = data.frame(location = c("here", "there", "here", "there", "where"), x = 1:5, y = c(6,7,8,6,10))
> test
  location x  y
1     here 1  6
2    there 2  7
3     here 3  8
4    there 4  6
5    where 5 10

Then, I want to make a condition where if y satisfy a condition, every location matched once are maintained in the dataset, something like

test %>% filter_something(y == 6)
  location x  y
1     here 1  6
2    there 2  7
3     here 3  8
4    there 4  6

Note that, even in line 4 there is no y = 6, they keep on the dataset, since there is at least one case where location match the ‘right’ y.

I can solve this problem creating another dataset using y == 6, and then doing an inner join with test, but any hint if there is another option more elegant?, because I’m not filtering just this variable, but I’m using another columns too.

>Solution :

We can group_by location, then use any(condition)

library(dplyr)

test %>% group_by(location) %>%
         filter(any(y==6))

Leave a Reply