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