gpt4 book ai didi

在某个值第一次出现后删除行

转载 作者:行者123 更新时间:2023-12-04 13:23:39 25 4
gpt4 key购买 nike

我有以下 df:

df <- data.frame(var1 = c(1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9),
var2 = c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"))

我想在达到第一个 5 (var1) 之后进行过滤。所以结果应该是:

  var1 var2
1 1 a
2 2 b
3 2 c
4 3 d
5 4 e
6 5 f

我试过:

   df1 <- df %>%
mutate(a = !duplicated(var1)) %>%
filter(var1 < 6 & a == TRUE)

但这里的问题是也删除了 var2(c) 的重复项。

最佳答案

我们可以使用cumsum 创建一个逻辑vector

df %>% 
filter(cumsum(var1 == 5) < 2)
# var1 var2
#1 1 a
#2 2 b
#3 2 c
#4 3 d
#5 4 e
#6 5 f

或者另一种选择是 slice with match

df %>%
slice(seq(match(5, var1)))

或者用 which.max (假设有一个 5 值)

df %>%
slice(seq(which.max(var1 == 5)))

关于在某个值第一次出现后删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44803281/

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