2017-06-03 6 views
1

Ich kann nicht scheinen, die geom_smooth Daten zu arbeiten.R Newb ggplot2 Problem

Beispieldaten:

## A tibble: 12 x 4 
    UID Month  n tot 
    <dbl> <chr> <int> <dbl> 
1 1001 2016-04  2 75 
2 1001 2016-05  7 500 
3 1001 2016-06  3 1673 
4 1001 2016-07  5 288 
5 1001 2016-08  2 123 
6 1001 2016-09  3 739 
7 1001 2016-10  4 241 
8 1001 2016-12  2 512 
9 1001 2017-01  5 350 
10 1001 2017-02  1 48 
11 1001 2017-03  2 125 
12 1001 2017-04  2 NA 

Plotten Code:

ggplot(one, aes(Month, tot)) + geom_point() + geom_smooth() 

Glauben Sie, es hat etwas mit dem Zeichenwert im Feld Datum zu tun hat?

Antwort

0

Manchmal mit Linien und Glätter Sie, welche Punkte sollten angeben müssen tatsächlich mit der Leitung verbunden sein, so können Sie hinzufügen group = 1 alles, um sicherzustellen, wird als Teil der gleichen Gruppe behandelt:

ggplot(one, aes(Month, tot)) + 
    geom_point() + 
    geom_smooth(aes(group=1)) 
0

Ja, es ist das Format der Month Spalte, die das glatte verhindert. Die Frage ist: Wie konvertiert man diese Spalte in ein Datum? Vorausgesetzt, Sie haben nur Jahr und Monat, aber Datum erfordert einen Tag.

Zwei Optionen. Sie könnten as.yearmon aus dem Zoo-Paket verwenden, um ein yearmon Objekt zu konvertieren:

library(dplyr) 
one %>% 
    mutate(date = zoo::as.yearmon(Month)) %>% 
    ggplot(aes(date, tot)) + geom_point() + geom_smooth() 

Oder Sie davon ausgehen können, dass das Datum am ersten Tag eines jeden Monats ist, für die Umwandlung in ein Datum:

library(dplyr) 
one %>% 
    mutate(date = as.Date(paste(Month, "01", sep = "-"))) %>% 
    ggplot(aes(date, tot)) + geom_point() + geom_smooth() 

enter image description here