【发布时间】:2014-08-30 05:53:51
【问题描述】:
当使用 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),] )) )
【问题讨论】:
-
你能提交一份错误报告吗?
-
你能链接到这个错误报告吗?
-
@Paul4forest issue 已关闭,因此它要么已经在当前版本中,要么仍在开发分支中。
-
@Hrvoje 感谢您的链接。根据 Hadley 的测试用例,
arrange()首先按group_by()函数中的列排序,然后按arrange()函数中的列排序。 test_that("分组排列首先按组排序", { df1 % group_by(cyl) %>%arrange(disp) %>% ungroup() df2 %arrange(cyl, disp) expect_equal (df1, df2) }) -
@PaulRougieux,我不完全理解您的回复。
mtcars %>% group_by(cyl) %>% arrange(disp) %>% ungroup()产生与mtcars %>% group_by(cyl) %>% arrange(disp)相同的不良结果它与arrange(cyl,disp)不同