例如,我有以下資料框:
| ID | 多變的 | 命令 |
|---|---|---|
| 1 | 一種 | 1 |
| 1 | b | 2 |
| 2 | b | 1 |
| 2 | 一種 | 2 |
| 2 | b | 3 |
| 3 | b | 1 |
| 3 | 一種 | 2 |
我想只保留“a”出現在“b”之前的ID組(即a的“順序”小于b)。所以結果看起來像這樣:
| ID | 多變的 | 命令 |
|---|---|---|
| 1 | 一種 | 1 |
| 1 | b | 2 |
| 2 | b | 1 |
| 2 | 一種 | 2 |
| 2 | b | 3 |
其中僅保留 ID 1 和 2(及其所有原始行),并且 ID 3 中的所有行都被洗掉,因為 b 的“順序”小于 a。有人可以指導如何在 R 中完成此操作嗎?
uj5u.com熱心網友回復:
your_data %>%
group_by(ID) %>%
filter(any(variable == "a" & lead(variable, default = "not b") == "b"))
這會忽略order列,并基于每個 ID 組中的行順序。它檢查是否存在a 在"a"一行和 a"b"在緊接的下一行。
在您的評論中,您在“b”之前說“a” - 我使用了“就在”之前的澄清。如果一個組有值"a", "c", "b",它不會保留在我的答案中,因為“a”不是“就在” “b”之前。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/444475.html
標籤:r 数据框 通过...分组 tidyverse 数据争吵
下一篇:擺脫熊貓回圈中的iterrows
