当使用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)

链接系统仅替换嵌套的命令,因此首先要进行分组,然后对分组后的结果进行排序,这将破坏原始的排序。

08-19 22:34