我有一个 data.frame,其中包含客户姓名、年份和每年的几个收入数字。
df <- data.frame(client = rep(c("Client A","Client B", "Client C"),3),
year = rep(c(2014,2013,2012), each=3),
rev = rep(c(10,20,30),3)
)
我想最终得到一个按客户和年份汇总收入的 data.frame。然后我想按年对 data.frame 进行排序,然后按收入递减。
library(dplyr)
df1 <- df %>%
group_by(client, year) %>%
summarise(tot = sum(rev)) %>%
arrange(year, desc(tot))
但是,当使用上面的代码时,该arrange()
函数根本不会改变分组 data.frame 的顺序。当我运行以下代码并强制转换为正常的 data.frame 时,它可以工作。
library(dplyr)
df1 <- df %>%
group_by(client, year) %>%
summarise(tot = sum(rev)) %>%
data.frame() %>%
arrange(year, desc(tot))
每次尝试arrange
通过分组变量进行 grouped_df 时,我是否遗漏了什么或者我需要这样做?
R 版本:3.1.1 dplyr 包版本:0.3.0.2
编辑 2017 年 11 月 13 日: 如lucacerone 所述,从 dplyr 0.5 开始,排列时再次忽略组。所以我的原始代码现在可以按照我最初预期的方式工作。
安排()再次忽略分组,恢复到 dplyr 0.3 及更早版本的行为。这使得arrange() 与其他dplyr 动词不一致,但我认为这种行为通常更有用。无论如何,它不会再次改变,因为更多的改变只会导致更多的混乱。