查找标识

问题描述:

我有一个数据帧advertisementID奖金两列,许多advertisementID的有一个以上的奖金价值,但我需要找到那些advertisementID的其中只有一个唯一支付值。如何在R中做到这一点?查找标识

实施例:

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

所以输出应该是这样的:

advertisementID Payout 
     1   10 

如advertisementID 1是具有独特的支出值,它是10

+2

请显示一个小的可重现的例子和预期的输出。此外,问题还不清楚 – akrun

+2

请参阅[如何制作一个很好的重现示例](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 – MrFlick

+0

@akrun我编辑了帖子 –

使用R基本:

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

输出:

advertisementID Payout 
1    1  10 

或与magrittr一个清洁的方式:

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

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

它工作得很好。 –

+0

感谢您的评论。 – www