Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
dplyr:在分组后安排不按预期行为并进行总结_R_Dplyr - Fatal编程技术网

dplyr:在分组后安排不按预期行为并进行总结

dplyr:在分组后安排不按预期行为并进行总结,r,dplyr,R,Dplyr,我一定是错过了一些关于dplyr中的groupby级别如何剥离的内容。在下面的示例中,我按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] #

我一定是错过了一些关于
dplyr
中的
groupby
级别如何剥离的内容。在下面的示例中,我按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
显然,这并没有按预期的
hp\u范围进行排序。我错过了什么


编辑:该示例按预期工作,无需在arrange中调用
desc
。还不清楚原因吗?

好的,我要追根究底了:

  • 调用
    desc
    没有任何效果,只是碰巧没有它示例就无法工作
  • 关键是,当您按多个列对结果进行分组时,结果似乎是按组自动排序的。在上面的示例中,它按
    cyl
    排序。要获得整个数据表的预期排序,必须先
    解组
    ,然后
    排列

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

  • 我只是想告诉你,到目前为止,你在这个网站上的所有问题和答案都非常好。良好清晰的解释以及可复制的示例。谢谢!