gpt4 book ai didi

R-如何有条件地删除group_by的第一行

转载 作者:行者123 更新时间:2023-12-04 17:30:32 25 4
gpt4 key购买 nike

我需要有条件地删除组的第一行。
我想按列 gr 分组,然后仅当组的第一行值为 a 时才删除每个组的第一行

例如

gr  value
1 b
1 c
1 a
2 a
2 d
3 b
3 a
3 h
3 a
4 a
4 a
4 g

会成为:
gr  value
1 b
1 c
1 a
2 d
3 b
3 a
3 h
3 a
4 a
4 g

我知道如何删除第一行组:
library(dplyr)
df <- df %>% group_by(a) %>% slice(2:n()) %>% ungroup()

但我不知道如何添加条件以仅在第一行 df$value = a 时执行此操作

我是 R 的新手,它对我来说仍然相当复杂,我无法在任何地方找到这个问题的答案。

非常感谢!

最佳答案

filter 内应用您的条件陈述

library(dplyr)

df %>%
group_by(gr) %>%
filter(!(value == 'a' & row_number() == 1))

样本数据:
df <- structure(list(gr = c(1L, 1L, 1L, 2L, 2L, 3L, 3L, 3L, 3L, 4L, 
4L, 4L), value = c("b", "c", "a", "a", "d", "b", "a", "h", "a",
"a", "a", "g")), .Names = c("gr", "value"), class = "data.frame", row.names = c(NA,
-12L))

更新:或正如@akrun 所建议的那样
library(dplyr)

df %>%
group_by(gr) %>%
slice(which(!(value == 'a' & row_number() == 1)))

关于R-如何有条件地删除group_by的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50794436/

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