我在数据框 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
答案 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)