我有一個具有給定列數的資料框,例如 5。我對每一列都有一個條件,并且想要選擇與 5 個條件中的 4 個匹配的行。
舉一個簡單的例子,假設我想要 A 到 E 列中至少 3 列的值大于 1 的行。
我知道如何使用 tidyverse 過濾特定條件,即如果列 A > 1 和列 B < 5,但不知道如何過濾滿足我設定的部分但不是全部條件的行。也許是一個相當簡單的問題,但我無法在網上立即找到答案,并且有點時間壓力。我是一個初學者,所以盡可能讓解釋盡可能簡單。謝謝!
uj5u.com熱心網友回復:
由于布林值可以轉換為 0 或 1(數字),因此您可以將 5 個條件相加并檢查該總和是否大于 5:
df = as_tibble(replicate(5, sample(1:10)))
df %>%
mutate(cond = (V1>5) (V2>2) (V3<4) (V4>7) (V5<2)) %>%
filter(cond >= 4)
# A tibble: 3 x 6
V1 V2 V3 V4 V5 cond
<int> <int> <int> <int> <int> <int>
1 9 10 3 8 3 4
2 1 7 1 10 6 3
3 10 8 2 9 2 4
Obs:你可以一次性完成,我只是將它分開,這樣你就可以看到總和列。
df %>% filter((V1>5) (V2>2) (V3<4) (V4>7) (V5<2) >= 4)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/529428.html
標籤:r条件语句过滤
上一篇:對r中的POSIXct日期使用“dput”:為什么它們的格式像1070236800而不是2003-12-01?
下一篇:如何為每個主題創建唯一ID?
