2017-10-12 8 views
0

J'ai deux colonnes dans une trame de données AdvertisementID et Payout, beaucoup de AdvertisementID ont plus d'un Payout valeur, mais je dois trouver de ceux AdvertisementID qui ont seulement un unique Valeur de paiement. Comment faire en R?ID Trouver basé sur une valeur de sortie unique en R

Exemple:

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

Ainsi, la sortie doit être comme suit:

advertisementID Payout 
     1   10 

comme AdvertisementID 1 a de la valeur de distribution unique qui est 10

+2

Veuillez montrer un petit exemple reproductible et une sortie attendue. En outre, la question n'est pas claire – akrun

+2

Voir [comment faire un excellent exemple reproductible] (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). – MrFlick

+0

@akrun J'ai édité le message –

Répondre

0

Utilisation de base R:

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

sortie:

advertisementID Payout 
1    1  10 

ou d'une manière propre à magrittr:

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

Une solution de 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) 
+0

Cela fonctionne assez bien. –

+0

Merci pour votre commentaire. – www