Search code examples
rdataframeunique

Finding IDs based on one unique Output Value in R


I have two columns in a dataframe advertisementID and Payout, Many advertisementID's have more than one Payout value, but I need to find those advertisementID's which have only one unique Payout value. How to do it in R ?

Example:

advertisementID   Payout  
      1              10  
      2              3  
      1              10  
      2              4 
      3              5
      3              4 

So the output should be like this:

advertisementID   Payout  
       1            10

as advertisementID 1 is having payout value unique which is 10


Solution

  • Using R base:

    new <- aggregate(Payout ~ advertisementID, dt, unique) 
    new[lengths(new$Payout)==1, ]
    

    output:

      advertisementID Payout
    1               1     10
    

    Or in a cleaner way with magrittr:

    library(magrittr)
    aggregate(Payout ~ advertisementID, dt, unique) %>% subset(lengths(Payout)==1)