在保留 (2) 其他列中的值的同时删除重复项
Removing Duplicates while Maintaining values in (2) Other Columns
我正在尝试通过 req_id 删除重复项,但需要在 Offer_accepted 或 Offer_rejected 列中保留值为 (1) 的特定 req_id .我试着摆弄 Tidy 包,但不太清楚如何正确地做到这一点。
示例数据:
structure(list(req_id = c(335, 335, 335, 335, 336, 336, 336,
337, 337, 337, 337), Offer_accepted = c(1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0), Offer_rejected = c(0, 0, 0, 0, 1, 0, 0, 1, 0, 0,
0)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-11L))
我们可以在filter
中使用if_any
并添加distinct
library(dplyr)
df1 %>%
filter(if_any(starts_with('Offer'), ~.x == 1)) %>%
distinct
-输出
# A tibble: 3 × 3
req_id Offer_accepted Offer_rejected
<dbl> <dbl> <dbl>
1 335 1 0
2 336 0 1
3 337 0 1
如果打算保留 'req_id' 所有在 'Offer' 列中至少有 1 的行,请执行 group_by
和 filter
(在在这种情况下,它 returns 完整数据)
df1 %>%
group_by(req_id) %>%
filter(any(if_any(starts_with('Offer'), ~.x == 1))) %>%
ungroup
也许我们可以这样:
library(dplyr)
df %>%
filter(rowSums(df[,2:3])>=1)
req_id Offer_accepted Offer_rejected
<dbl> <dbl> <dbl>
1 335 1 0
2 336 0 1
3 337 0 1
我正在尝试通过 req_id 删除重复项,但需要在 Offer_accepted 或 Offer_rejected 列中保留值为 (1) 的特定 req_id .我试着摆弄 Tidy 包,但不太清楚如何正确地做到这一点。
示例数据:
structure(list(req_id = c(335, 335, 335, 335, 336, 336, 336,
337, 337, 337, 337), Offer_accepted = c(1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0), Offer_rejected = c(0, 0, 0, 0, 1, 0, 0, 1, 0, 0,
0)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-11L))
我们可以在filter
中使用if_any
并添加distinct
library(dplyr)
df1 %>%
filter(if_any(starts_with('Offer'), ~.x == 1)) %>%
distinct
-输出
# A tibble: 3 × 3
req_id Offer_accepted Offer_rejected
<dbl> <dbl> <dbl>
1 335 1 0
2 336 0 1
3 337 0 1
如果打算保留 'req_id' 所有在 'Offer' 列中至少有 1 的行,请执行 group_by
和 filter
(在在这种情况下,它 returns 完整数据)
df1 %>%
group_by(req_id) %>%
filter(any(if_any(starts_with('Offer'), ~.x == 1))) %>%
ungroup
也许我们可以这样:
library(dplyr)
df %>%
filter(rowSums(df[,2:3])>=1)
req_id Offer_accepted Offer_rejected
<dbl> <dbl> <dbl>
1 335 1 0
2 336 0 1
3 337 0 1