试图理解dplyr函数 - group_by

时间:2017-09-05 02:04:33

标签: r dplyr

我想了解group_by函数在dplyr中的工作方式。我使用airqualitylink附带的datasets数据集。

我理解如果我执行以下操作,则应按Temp变量

的递增顺序排列记录
airquality_max1 <- airquality %>% arrange(Temp)

我在airquality_max1看到了这种情况。我现在想要通过增加Temp的顺序排列记录,但按Month分组。因此,最终结果应首先按Month == 5的递增顺序包含Temp的所有记录。然后它应该以{{1​​}}的递增顺序包含Month == 6的所有记录,依此类推,所以我使用以下命令

Temp

但是,我发现结果仍然只是airquality_max2 <- airquality %>% group_by(Month) %>% arrange(Temp) 的递增顺序,而不是按Temp分组,即Monthairquality_max1相等。

我不确定为什么在airquality_max2函数之前Month的分组没有发生。谁能帮助我理解我在这里做错了什么?

除了尝试按列对数据框进行排序的问题之外,我试图理解arrange的行为,因为我试图用它来解释group_by对某人的应用。

1 个答案:

答案 0 :(得分:4)

arrange忽略group_by,请参阅dplyr 0.5.0上的break-changes。如果您需要按两列排序,则可以执行以下操作:

airquality %>% arrange(Month, Temp)

对于分组数据框,您还可以.by_group变量按组变量排序

airquality %>% group_by(Month) %>% arrange(Temp, .by_group = TRUE)