gpt4 book ai didi

r - 如何使用dplyr按组删除某个点之后的所有行?

转载 作者:行者123 更新时间:2023-12-03 22:54:03 25 4
gpt4 key购买 nike

我有一个数据框:

test_df <- data.frame(
x = c(rep("a", 5), rep("b", 5)),
y = c(1, 2, NA, 2, 3, NA, 1, 2, 3, 1)
)

我想通过 x 列中的分组信息删除 y == 2 之后的所有 行。有没有办法在 dplyr 中做到这一点?

我想要的结果是
从:
   x  y
1 a 1
2 a 2
3 a NA
4 a 2
5 a 3
6 b NA
7 b 1
8 b 2
9 b 3
10 b 1


   x  y
1 a 1
2 a 2
6 b NA
7 b 1
8 b 2

最佳答案

group_by(df, x) %>%
mutate(first2 = min(which(y == 2 | row_number() == n()))) %>%
filter(row_number() <= first2) %>%
select(-first2)
# Source: local data frame [5 x 2]
# Groups: x [2]
#
# x y
# (fctr) (int)
# 1 a 1
# 2 a 2
# 3 b NA
# 4 b 1
# 5 b 2
# 6 c 1

使用这些数据
df = structure(list(x = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L, 2L, 3L), .Label = c("a", "b", "c"), class = "factor"), y = c(1L, 2L,
NA, 2L, 3L, NA, 1L, 2L, 3L, 1L, 1L)), .Names = c("x", "y"), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11"))

关于r - 如何使用dplyr按组删除某个点之后的所有行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36989980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com