根据 R 中的一个唯一输出值查找 ID
Finding IDs based on one unique Output Value in R
我在数据框中有两列 advertisementID 和 Payout,许多 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)
我在数据框中有两列 advertisementID 和 Payout,许多 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)