当使用dplyr函数group_by()
以及紧随其后的arrange()
时,我期望得到一个输出,其中数据帧在我在group_by()
中声明的组内排序。我对文档的阅读是,这种组合应该产生这样的结果,但是当我尝试使用它时,这并不是我所能得到的,谷歌搜索并没有表明其他人也遇到了同样的问题。我期望这个结果是错误的吗?
这是一个使用R内置数据集ToothGrowth的示例:
library(dplyr)
ToothGrowth %>%
group_by(supp) %>%
arrange(len)
运行此命令将生成一个数据帧,其中整个数据帧均根据
len
排序,而不是在supp
因素内。这是产生所需输出的代码:
ToothGrowth %>%
group_by(supp) %>%
do( data.frame(with(data=., .[order(len),] )) )
最佳答案
我想你要
ToothGrowth %>%
arrange(supp,len)
链接系统仅替换嵌套的命令,因此首先要进行分组,然后对分组后的结果进行排序,这将破坏原始的排序。