在这种类型的数据中:
df <- data.frame(
Sequ = c(1,1,2,2,2,3,3,3),
G = c("A", "B", "*", "B", "A", "A", "*", "B")
)
我需要过滤掉按 Sequ
分组的行 iff Sequ
-first 值为 *
。我可以这样做,但想知道 dplyr
中是否有更直接、更优雅的方式:
library(dplyr)
df %>%
group_by(Sequ) %>%
mutate(check = ifelse(first(G)=="*", 1, 0)) %>%
filter(check != 1)
# A tibble: 5 × 3
# Groups: Sequ [2]
Sequ G check
<dbl> <chr> <dbl>
1 1 A 0
2 1 B 0
3 3 A 0
4 3 * 0
5 3 B 0
最佳答案
这是一个直接的dplyr
方式:
library(dplyr)
df %>%
group_by(Sequ) %>%
filter(!first(G == "*"))
Sequ G
<dbl> <chr>
1 1 A
2 1 B
3 3 A
4 3 *
5 3 B
关于删除以组第一位置的单个单元格中的值为条件的行序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70485788/