Dplyr - Organize um grouped_df por variável de grupo não funcionando
Eu tenho um data.frame que contém nomes de clientes, anos e vários números de receita de cada ano.
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)
)
Quero terminar com um data.frame que agrega a receita por cliente e ano. Quero, então, classificar o data.frame por ano e depois por receita decrescente.
library(dplyr)
df1 <- df %>%
group_by(client, year) %>%
summarise(tot = sum(rev)) %>%
arrange(year, desc(tot))
No entanto, ao usar o código acima doarrange()
A função não altera a ordem do data.frame agrupado. Quando executo o código abaixo e coagido a um data.frame normal, ele funciona.
library(dplyr)
df1 <- df %>%
group_by(client, year) %>%
summarise(tot = sum(rev)) %>%
data.frame() %>%
arrange(year, desc(tot))
Estou faltando alguma coisa ou precisarei fazer isso sempre que tentararrange
um grouped_df por uma variável agrupada?
Versão R: 3.1.1 versão do pacote dplyr: 0.3.0.2
EDIT 13/11/2017: Como observado porlucacerona, começando com dplyr 0.5, organize novamente ignora grupos ao classificar. Portanto, meu código original agora funciona da maneira que eu esperava inicialmente.
O arranjo () mais uma vez ignora o agrupamento, voltando ao comportamento do dplyr 0.3 e anterior. Isso torna o arranjo () inconsistente com outros verbos dplyr, mas acho que esse comportamento geralmente é mais útil. Independentemente disso, ele não mudará novamente, pois mais alterações causarão mais confusão.