gpt4 book ai didi

r - 如何在 dplyr 中提取一个特定组

转载 作者:行者123 更新时间:2023-12-04 10:07:16 29 4
gpt4 key购买 nike

给定一个分组的 tbl,我可以提取一个/几个组吗?
这样的功能在原型(prototype)代码时很有用,例如:

mtcars %>%
group_by(cyl) %>%
select_first_n_groups(2) %>%
do({'complicated expression'})

当然,可以在分组之前进行显式过滤,但这可能很麻烦。

最佳答案

有点dplyr连同一些嵌套/取消嵌套(由 tidyr 包支持),您可以建立一个小助手来获取第一个(或任何)组

first = function(x) x %>% nest %>% ungroup %>% slice(1) %>% unnest(data)
mtcars %>% group_by(cyl) %>% first()

通过调整切片,您还可以按索引提取第 n 个或任何范围的组,但通常第一个或最后一个是大多数用户想要的。

这个名字的灵感来自于函数式 API,它们都称之为 first。 (参见标准库,即 kotlin、python、scala、java、spark)。

编辑:更快的版本

避免嵌套的更具可扩展性的版本(在大型数据集上速度快 50 倍)将是
first_group = function(x) x %>%
select(group_cols()) %>%
distinct %>%
ungroup %>%
slice(1) %>%
{ semi_join(x, .)}

这个改进版本的另一个积极的副作用是,如果 x 中不存在分组,它会失败。 .

关于r - 如何在 dplyr 中提取一个特定组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26503350/

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