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

时间:2017-10-12 14:44:34

标签: r dataframe unique

我在数据框 adsID 付款中有两列,许多广告ID 有多个付款< / strong>值,但我需要找到只有一个一个付款值的广告ID 。如何在R中做到?

示例:

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

所以输出应该是这样的:

advertisementID   Payout  
       1            10

因为广告ID 1具有唯一的支付值,其为10

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

使用R base:

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)