根据 R 中的一个唯一输出值查找 ID

Finding IDs based on one unique Output Value in R

我在数据框中有两列 advertisementIDPayout,许多 advertisementID 有更多比一个 Payout 值,但我需要找到那些 advertisementID's 只有 one 唯一 支出值。如何在 R 中做到这一点?

示例:

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

所以输出应该是这样的:

advertisementID   Payout  
       1            10

因为广告 ID 1 的支出值是唯一的,即 10

来自 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

数据

dt <- read.table(text = "advertisementID   Payout  
      1              10  
                 2              3  
                 1              10  
                 2              4 
                 3              5
                 3              4",
                 header = TRUE)

使用 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)