How to select rows according to column value conditions

后端 未结 4 1554
心在旅途
心在旅途 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:01

    Consider df is your data.frame, then use tapply and [ to subset what you want:

    > ind <- with(df, tapply(dummy, name, sum))
    > df[df$name %in% names(ind)[ind!=0], ]
       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
    

    Another alternative:

    > result <- split(df, df$name)[with(df, tapply(dummy, name, function(x) sum(x)!=0))]
    > do.call(rbind, result)
    

提交回复
热议问题