gpt4 book ai didi

R: dplyr 如何分组然后根据每组第一行的条件过滤行

转载 作者:行者123 更新时间:2023-12-05 01:52:51 25 4
gpt4 key购买 nike

我有一个简单的数据框,例如

df <- data.frame(x=c(1,1,1,1,2,2,2,3,3,3),
y=c('a','b','a','c','e','d','e','a','f','c'))

enter image description here

我想按 x 分组,然后如果每个 x 组的第一行有 y == 'a',那么只得到有 y == 'a' 的行 | y == 'c'

所以我希望结果有第 1、3、4、8、10 行

非常感谢。

最佳答案

按 'x' 分组后,创建一个 & 条件 - 1) 检查 'y' 的 first 值是否为 'a',2) 检查的条件对于列中的值“a”、“c”

library(dplyr)
df %>%
group_by(x) %>%
filter('a' == first(y), y %in% c('a', 'c')) %>%
ungroup

-输出

# A tibble: 5 × 2
x y
<dbl> <chr>
1 1 a
2 1 a
3 1 c
4 3 a
5 3 c

如果我们有额外的规则,创建一个命名的列表,其中名称将是预期的“y”的第一个值和要过滤的值的向量,然后提取列表 元素基于 'y' 的 first 值,并在包含 %in%

的逻辑表达式中使用该向量
df %>%
group_by(x) %>%
filter(y %in% list(a = c('a', 'c'), e = 'e')[[first(y)]]) %>%
ungroup

-输出

# A tibble: 7 × 2
x y
<dbl> <chr>
1 1 a
2 1 a
3 1 c
4 2 e
5 2 e
6 3 a
7 3 c

关于R: dplyr 如何分组然后根据每组第一行的条件过滤行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71430627/

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