gpt4 book ai didi

r - 在 R dplyr 中,为什么在 count() 之后需要 ungroup() ?

转载 作者:行者123 更新时间:2023-12-02 18:02:16 26 4
gpt4 key购买 nike

当我第一次开始使用 R 编程时,我经常使用 dplyr count()

library(tidyverse)    
mtcars %>% count(cyl)

一旦我开始使用 apply 函数,我就开始遇到 count() 的问题。如果我只是将 ungroup() 添加到 count() 的末尾,问题就会消失。

我没有任何特定的可重现内容可以展示。但是有人可以解释一下问题可能是什么,为什么 ungroup() 总是修复它,以及在每次 count( ),还是在任何group_by()之后?当然,我假设我不再需要在计数或汇总后对数据进行分组。

mtcars %>% count(cyl) %>% ungroup()

最佳答案

您过去遇到的问题来自 count() 的旧行为。直到 dplyr 0.5.0,如果您这样做:

mtcars %>%
count(cyl, wt)

结果仍将按 cyl 列分组。这意味着,例如,如果您按照 summarize(mean(am)) 之类的方式进行跟踪,那么您可能会在预期的情况下为每个 cyl 获得一行整体为一排。如果您将 %>% ungroup() 放在计数后面,该问题就会得到解决。

This behavior was changed in dplyr 0.7.0 (2017 年 6 月发布),这样 count() 保留其输入的分组(意味着 mtcars %>% count(wt, cyl) 现在返回一个未分组的表) 。这可能就是您无法再重现问题的原因,这意味着您不再需要在 count() 之后执行 ungroup()

<小时/>

请注意,您可能仍需要在 group_by()summarize() 之后执行 ungroup():

mtcars %>%
group_by(cyl, wt) %>%
summarize(n = n())

返回仍按cyl分组的小标题:

# A tibble: 30 x 3
# Groups: cyl [?]
cyl wt n
<dbl> <dbl> <int>
1 4 1.51 1
2 4 1.62 1
3 4 1.84 1
4 4 1.94 1
5 4 2.14 1
6 4 2.2 1
7 4 2.32 1
8 4 2.46 1
9 4 2.78 1
10 4 3.15 1
# ... with 20 more rows

关于r - 在 R dplyr 中,为什么在 count() 之后需要 ungroup() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51404252/

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