【发布时间】:2022-01-10 07:15:13
【问题描述】:
我是 R 新手,可能有一个简单的解决方案,但我很难找到一个。 我希望对数据框进行子集化,以排除在另一行中没有提供这两个值的所有行。 所以,假设这是我的数据框: df1
| v1 | v2 | v3 |
|---|---|---|
| A | 1 | x |
| A | 2 | y |
| A | 3 | x |
| B | 4 | x |
| C | 5 | y |
| C | 6 | y |
| D | 7 | y |
| D | 8 | x |
我希望消除对应字母 (v1) 中没有 x 和 y 值 (v3) 的所有行,同时保持所有其他列不变 (v2) 所以我的最终结果是:
| v1 | v2 | v3 |
|---|---|---|
| A | 1 | x |
| A | 2 | y |
| A | 3 | x |
| D | 7 | y |
| D | 8 | x |
只有值 A 和 D 会被保留,因为它们同时具有对应的 x 和对应的 y 值。 B 和 C 将被消除,因为它们只有 x 或 y 中的一个,而不是两者。
我尝试过使用 group_by 和 filter。结果显示为空数据框:
library(dplyr)
df2 <- df1 %>%
group_by(v1) %>%
filter(all(c('x', 'y') %in% v3))
还有:
library(dplyr)
df2 <- df1 %>%
group_by(v1) %>%
filter(any(v3 == "x"),
any(v3 == "y"))
【问题讨论】:
-
我只是对其进行了编辑以使表格可见,然后您未对其进行编辑。哈哈