gpt4 book ai didi

r - 为什么汇总和汇总给出的答案顺序不同?

转载 作者:行者123 更新时间:2023-12-04 21:30:42 24 4
gpt4 key购买 nike

如果我使用聚合函数或在 dplyr 包中使用汇总来计算某些东西,为什么它们给出的答案顺序不同?

例子:

a <- aggregate(hp~mpg+cyl+gear, mtcars, FUN = sum)

给我
 mpg cyl gear  hp
1 21.5 4 3 97
2 18.1 6 3 105
3 21.4 6 3 110
4 10.4 8 3 420
5 13.3 8 3 245


b <- mtcars %>%
group_by(mpg, cyl, gear) %>%
summarise(hp = sum(hp))

给我
    mpg   cyl  gear    hp
<dbl> <dbl> <dbl> <dbl>
1 10.4 8 3 420
2 13.3 8 3 245
3 14.3 8 3 245
4 14.7 8 3 230
5 15 8 5 335

为什么顺序不一样?

最佳答案

正如@zx8754 所提到的,tidyverse 操作将重新排列行。不能保证您将获得特定的行顺序。
https://github.com/tidyverse/dplyr/issues/2192#issuecomment-281655703

仔细观察,我看到聚合按齿轮、cyl 和 mpg 排序。
因此,以下 tidyverse 代码将提供与 aggregate(hp~mpg+cyl+gear, mtcars, FUN = sum) 相同的行顺序:

library(tidyverse)
mtcars %>% group_by(gear, cyl, mpg) %>% summarise(hp = sum(hp)) %>% head()
#> # A tibble: 6 x 4
#> # Groups: gear, cyl [3]
#> gear cyl mpg hp
#> <dbl> <dbl> <dbl> <dbl>
#> 1 3 4 21.5 97
#> 2 3 6 18.1 105
#> 3 3 6 21.4 110
#> 4 3 8 10.4 420
#> 5 3 8 13.3 245
#> 6 3 8 14.3 245

创建于 2019-02-27 由 reprex package (v0.2.1)

并获得与 mtcars %>% group_by(mpg, cyl, gear) %>% summarise(hp = sum(hp)) 相同的行顺序:

library(tidyverse)
aggregate(hp~gear+cyl+mpg, mtcars, FUN = sum) %>% head()
#> gear cyl mpg hp
#> 1 3 8 10.4 420
#> 2 3 8 13.3 245
#> 3 3 8 14.3 245
#> 4 3 8 14.7 230
#> 5 5 8 15.0 335
#> 6 3 8 15.2 330

创建于 2019-02-27 由 reprex package (v0.2.1)

关于r - 为什么汇总和汇总给出的答案顺序不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52602937/

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