我正在嘗試通過 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))
uj5u.com熱心網友回復:
也許我們可以這樣:
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
uj5u.com熱心網友回復:
我們可以使用if_anyinfilter并添加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,則執行 agroup_by和filter(在這種情況下,它回傳完整資料)
df1 %>%
group_by(req_id) %>%
filter(any(if_any(starts_with('Offer'), ~.x == 1))) %>%
ungroup
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460018.html
