group by and filter data management using dplyr

后端 未结 2 1330
予麋鹿
予麋鹿 2020-12-11 01:09

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

相关标签:
2条回答
  • 2020-12-11 01:26

    You can try

    df <- d %>% mutate(test = ifelse((b != 1) == T, 0, 1)) %>% group_by(c) %>% 
                mutate(test = sum(test)) %>% filter(test != 0) %>% select(-test)
    

    which yields

    #  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
    
    0 讨论(0)
  • 2020-12-11 01:29

    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
    
    0 讨论(0)
提交回复
热议问题