2016-10-18 3 views
0

Я хотел бы получить отдельный участок за каждый месяц (12 участков в общей сложности за каждый месяц). Я использую набор данных nycflights13.ggplot, как получить отдельные участки за каждый месяц в R

by_tailnum <- group_by(flights, tailnum) 
delay <- summarise(by_tailnum, 
        count = n(), 
        dist = mean(distance, na.rm = TRUE), 
        delay = mean(arr_delay, na.rm = TRUE)) 
delay <- filter(delay, count > 20, dist < 2000) 




ggplot(delay, aes(dist, delay)) + 
    geom_point(aes(size = count), alpha = 1/2) + 
    labs(x="Distancia (millas)", y="Retraso (mins.)") + 
    geom_smooth(method = 'gam') + 
    scale_size_area() + 
    ggtitle("Relación entre distancia y retrasos en los vuelos") + 
    scale_radius(name="Núm. vuelos") 

Я попытался добавить следующее с

nycflights13::flights$month <- month(as.Date(Date)) 

Но я получаю сообщение об ошибке; Ошибка: не удалось найти функцию «месяц»

Заранее спасибо.

+0

Я думаю, что функция 'месяцев()' –

+0

Параметр 'flights' набор данных уже есть столбец' month'. – Spacedman

+0

Ваша попытка не удалась, потому что в базовых пакетах или в 'ggplot' или' dplyr' нет функции «месяц» R, которая, мы можем только догадываться, вы уже приложили. В пакете lubridate есть один. например, 'lubridate :: month (as.Date (« 1970-01-01 »)), и в базовых пакетах есть пакет« месяцев », который возвращает имя месяца. – Spacedman

ответ

2

Месяц уже в наборе данных полетов, так что вы могли бы сделать что-нибудь вроде этого:

library(dplyr) 
    library(nycflights13) 
    library(ggplot2) 

    data("flights") 
    by_tailnum <- group_by(.data = flights, month, tailnum) 
    delay <- summarise(by_tailnum, 
         count = n(), 
         dist = mean(distance, na.rm = TRUE), 
         delay = mean(arr_delay, na.rm = TRUE)) 
    delay <- filter(delay, count > 20, dist < 2000) 




    ggplot(delay, aes(dist, delay)) + 
      geom_point(aes(size = count), alpha = 1/2) + 
      labs(x="Distancia (millas)", y="Retraso (mins.)") + 
      geom_smooth(method = 'gam') + 
      scale_size_area() + 
      ggtitle("Relación entre distancia y retrasos en los vuelos") + 
      scale_radius(name="Núm. vuelos") + 
      facet_grid(month ~ .) 
+0

Вы также можете добавить название месяца с 'flight $ Month = months (flights $ time_hour)', а затем group/facet. – Spacedman

+0

Я пробовал с; – florecitas

+0

рейсов $ Месяц = ​​месяцы (рейсы $ time_hour) by_tailnum <- group_by (полеты, месяц, tailnum) задержки <- обобщать (by_tailnum, граф = п(), расстояния = среднего (расстояние, na.rm = TRUE), задержки = средний (arr_delay, na.rm = TRUE)) задержки <- фильтр (задержка, число> 20, Dist <2000) scale_radius (Name = "Num Vuelos.") + facet_grid (рейсы $ Month ~.) Но ошибка в layout_base (данные, строки, drop = drop): по крайней мере один слой должен содержать все переменные, используемые для фасетирования – florecitas

Смежные вопросы