dplyr:在group_by和summary之后安排不按预期运行

zim*_*eee 5 r dplyr

我必须遗漏一些关于如何剥离group_by水平的东西dplyr.在下面的示例中,我将2列分组,将值汇总到单个变量中,然后按该新变量排序:

mtcars %>% group_by( cyl, gear ) %>% 
  summarize( hp_range = max(hp) - min(mpg)) %>% 
  arrange( desc(hp_range) )

# Source: local data frame [8 x 3]
# Groups: cyl [3]
#
#    cyl  gear  hp_range
#  (dbl) (dbl) (dbl)
#1     4     4  87.6
#2     4     5  87.0
#3     4     3  75.5
#4     6     5 155.3
#5     6     4 105.2
#6     6     3  91.9
#7     8     5 320.0
#8     8     3 234.6
Run Code Online (Sandbox Code Playgroud)

显然这不按hp_range预期排序.我错过了什么?

编辑:该示例按预期工作,没有desc安排调用.还不清楚为什么?

zim*_*eee 8

好的,刚刚到底:

  1. 呼吁desc没有效果,这是一个偶然的例子,没有它就没有用
  2. 关键是,当您有group_by多个列时,似乎结果会自动按组排序.在上面的示例中,它按排序cyl.为了获得预期的排序整个数据表,你必须先ungrouparrange

    mtcars %>% group_by( cyl, gear ) %>% 
       summarize( hp_range = max(hp) - min(mpg)) %>% 
       ungroup() %>% 
       arrange( hp_range )
    
    Run Code Online (Sandbox Code Playgroud)