How to extract all the rows if a level in one column contains all the levels of another column in R?

前端 未结 3 858
你的背包
你的背包 2020-12-12 07:38

I have the following data

    ID       INDUSTRY        PRODUCT                  
  625109    PersonalCare     Neolone Preservatives    
  199672    PersonalC         


        
3条回答
  •  自闭症患者
    2020-12-12 07:57

    Multiple ways to do this :

    In dplyr

    df %>% 
       group_by(ID) %>% 
       filter(all(c("Neolone Preservatives", "Optiphen") %in% PRODUCT))
    
    
    #     ID     INDUSTRY               PRODUCT
    #                            
    #1 625109 PersonalCare Neolone Preservatives
    #2 227047       Pharma              Optiphen
    #3 625109 PersonalCare              Optiphen
    #4 227047         Food Neolone Preservatives
    

    In base R :

    df[ave(df$PRODUCT, df$ID, FUN = function(x) 
                     all(c("Neolone_Preservatives", "Optiphen") %in% x)) == "TRUE", ]
    

提交回复
热议问题