Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

group by and filter data management using dplyr

Tags:

r

dplyr

Take a simple dataset

a <- c(1,2,3,4,5,6,7,8)
b <- c(1,2,2,1,2,2,2,2)
c <- c(1,1,1,2,2,2,3,3)
d <- data.frame(a,b,c)

now I want to filter my data, so that we group_by(c) and then remove all data where no b=1occurs.

Thus the results (e) should look like d but without the two bottom rows

I have tried using

e <- d %>%
  group_by(c) %>%
  filter(n(b)>1)

The output should contain the data in green below and remove the data in red

enter image description here

like image 710
lukeg Avatar asked Jun 24 '15 12:06

lukeg


1 Answers

Try

d %>% 
  group_by(c) %>% 
  filter(any(b == 1))

Which gives:

#Source: local data frame [6 x 3]
#Groups: c
#
#  a b c
#1 1 1 1
#2 2 2 1
#3 3 2 1
#4 4 1 2
#5 5 2 2
#6 6 2 2
like image 189
Steven Beaupré Avatar answered Sep 28 '22 12:09

Steven Beaupré