在保留 (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_byfilter(在在这种情况下,它 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