我想了解group_by
函数在dplyr
中的工作方式。我使用airquality
包link附带的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
分组,即Month
和airquality_max1
相等。
我不确定为什么在airquality_max2
函数之前Month
的分组没有发生。谁能帮助我理解我在这里做错了什么?
除了尝试按列对数据框进行排序的问题之外,我试图理解arrange
的行为,因为我试图用它来解释group_by
对某人的应用。
答案 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)