0

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

www
  • 38,575
  • 12
  • 48
  • 84

2 Answers2

0

A solution from dplyr.

library(dplyr)

dt2 <- dt %>%
  group_by(advertisementID) %>%
  filter(n_distinct(Payout) == 1) %>%
  distinct(advertisementID, Payout) %>%
  ungroup()
dt2
# A tibble: 1 x 2
  advertisementID Payout
            <int>  <int>
1               1     10

DATA

dt <- read.table(text = "advertisementID   Payout  
      1              10  
                 2              3  
                 1              10  
                 2              4 
                 3              5
                 3              4",
                 header = TRUE)
www
  • 38,575
  • 12
  • 48
  • 84
0

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)
Patricio Moracho
  • 717
  • 11
  • 15