How to select rows according to column value conditions

后端 未结 4 1551
心在旅途
心在旅途 2020-12-06 22:10

I have a data set which looks like the following (partially):

id  name    dummy
1   Jane    1
1   Jane    0
1   Jane    1
2   Mike    0
2   Mike    0
2   Mik         


        
4条回答
  •  眼角桃花
    2020-12-06 23:03

    A possible solution:

    subset(dat, as.logical(ave(dummy, id, FUN = any)))
    
    #    id name dummy
    # 1   1 Jane     1
    # 2   1 Jane     0
    # 3   1 Jane     1
    # 9   3  Tom     1
    # 10  3  Tom     1
    # 11  3  Tom     0
    # 12  3  Tom     0
    

    An alternative with data.table:

    library(data.table)
    setDT(dat)[, if (any(dummy)) .SD, by = id]
    

    Or with dplyr:

    library(dplyr)
    dat %>% 
      group_by(id) %>% 
      filter(any(dummy))
    

提交回复
热议问题