查找标识
问题描述:
我有一个数据帧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
答
使用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
请显示一个小的可重现的例子和预期的输出。此外,问题还不清楚 – akrun
请参阅[如何制作一个很好的重现示例](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 – MrFlick
@akrun我编辑了帖子 –