当使用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),] )) )
Dav*_*ger 37
您可以产生通过设置预期的行为.by_group = TRUE在arrange:
library(dplyr)
ToothGrowth %>%
    group_by(supp) %>%
    arrange(len, .by_group = TRUE)
Jer*_*myS 10
我想你想要的
ToothGrowth %>%
  arrange(supp,len)
链接系统只是替换嵌套命令,因此首先进行分组,然后对分组结果进行排序,从而打破原始排序.