2017-09-22 5 views
0

Ich versuche, eine Handlung zu erstellen, Jahr zu Jahr Umsatz zu vergleichen, aber ich kann es nicht zur Arbeit und verstehe nicht warum.Vergleichen von Jahr zu Jahr Umsatz

Betrachten Sie meine df:

df <- data.frame(date = seq(as.Date("2016-01-01"), as.Date("2017-10-01"), by = "month"), 
       rev = rnorm(22, 150, sd = 20)) 

    df %>% 
     separate(date, c("Year", "Month", "Date")) %>% 
     filter(Month <= max(Month[Year == "2017"])) %>% 
     group_by(Year, Month) %>% 
     ggplot(aes(x = Month, y = rev, fill = Year)) + 
     geom_line() 
geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic? 

Ich verstehe nicht wirklich, warum dies nicht funktioniert. Was ich will, sind zwei Zeilen, die von Januar bis Oktober gehen.

Antwort

1

dies sollte für Sie arbeiten:

library(tidyverse) 
df <- data.frame(date = seq(as.Date("2016-01-01"), as.Date("2017-10-01"), by = "month"), 
       rev = rnorm(22, 150, sd = 20)) 

df %>% 
    separate(date, c("Year", "Month", "Date")) %>% 
    filter(Month <= max(Month[Year == "2017"])) %>% 
    ggplot(aes(x = Month, y = rev, color = Year, group = Year)) + 
    geom_line() 

es war nur die Gruppierung, die aufgrund der Art der Variablen falsch gelaufen, könnte es nützlich sein, wenn Sie lubridate die Termine (auch ein tidyverse Paket)

library(lubridate) 
df %>% 
    mutate(Year = as.factor(year(date)), Month = month(date)) %>% 
    filter(Month <= max(Month[Year == "2017"])) %>% 
    ggplot(aes(x = Month, y = rev, color = Year)) + 
    geom_line() 
0

Ich denke, ggplot2 ist verwirrt, weil es nicht das Format Ihrer Month Spalte erkennt, die in diesem Fall ein Zeichen ist. Versuchen Sie es in numerische Umwandlung:

... + 
ggplot(aes(x = as.numeric(Month), y = rev, colour = Year)) + 
.... 

Bitte beachte, dass ich das Wort ersetzen fill mit colour, die ich glaube, mehr Sinn für dieses Diagramm macht:

sample output

Btw, ich bin nicht sicher, dass die group_by Anweisung fügt nichts hinzu. Ich bekomme das gleiche Diagramm mit oder ohne es.

Verwandte Themen