Ho un data.frame che contiene i nomi dei client, gli anni e diversi numeri di entrate di ogni anno.Dplyr - Disponi un grouped_df per variabile di gruppo non funzionante
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)
)
Voglio finire con un data.frame che aggrega il fatturato per cliente e anno. Quindi desidero ordinare la data.frame per anno, quindi ricavandone le entrate.
library(dplyr)
df1 <- df %>%
group_by(client, year) %>%
summarise(tot = sum(rev)) %>%
arrange(year, desc(tot))
Tuttavia, quando si utilizza il codice sopra la funzione arrange()
non cambia l'ordine del data.frame raggruppate affatto. Quando eseguo il codice sottostante e coercio a un normale data.frame funziona.
library(dplyr)
df1 <- df %>%
group_by(client, year) %>%
summarise(tot = sum(rev)) %>%
data.frame() %>%
arrange(year, desc(tot))
mi sto perdendo qualcosa o avrò bisogno di fare questo ogni volta quando si cerca di arrange
un grouped_df da una variabile raggruppate?
R Versione: 3.1.1 dplyr versione del pacchetto: 0.3.0.2
EDIT 2017/11/13: Come notato da lucacerone, a cominciare da dplyr 0.5, organizzare ancora una volta ignora i gruppi durante l'ordinamento. Quindi il mio codice originale ora funziona nel modo in cui inizialmente mi aspettavo.
arrangiare() ancora una volta ignora il raggruppamento, ripristinando il comportamento di dplyr 0.3 e precedenti. Questo rende arrangiante() incoerente con altri verbi dplyr, ma penso che questo comportamento sia generalmente più utile. Indipendentemente da ciò, non cambierà di nuovo, poiché ulteriori cambiamenti causeranno solo più confusione.
dal dplyr 0.5 questo non funziona più: '' 'rottura cambia organizzare() ignora ancora una volta il raggruppamento, tornando indietro al comportamento dei dplyr 0.3 e precedenti . Questo rende arrangiante() incoerente con altri verbi dplyr, ma penso che questo comportamento sia generalmente più utile. Indipendentemente da ciò, non cambierà di nuovo, poiché ulteriori cambiamenti causeranno solo più confusione. '' – lucacerone
Questo commento deve essere più visibile. Sfortunatamente la modifica, quindi, cambia con il comportamento di arrangiamento, in questo stadio molte risposte StackOverflow vecchie e altamente potenziate risultano errate. –