У меня есть фрейм данных, называемый «мадрид», в котором измеряются загрязнители воздуха, а также дата, год, месяц и день. Есть данные с 2001 по 2018 год
data.frame': 3808224 obs. of 15 variables:
$ date : Date, format: "2001-08-01" "2001-08-01" "2001-08-01" ...
$ BEN : num NA 1.5 NA NA NA ...
$ CO : num 0.37 0.34 0.28 0.47 0.39 ...
$ EBE : num NA 1.49 NA NA NA ...
$ NMHC : num NA 0.07 NA NA NA ...
$ NO_2 : num 58.4 56.2 50.7 69.8 22.8 ...
$ O_3 : num 34.5 42.2 46.3 40.7 66.3 ...
$ PM10 : num 105 100.6 100.1 69.8 75.2 ...
$ SO_2 : num 6.34 8.11 7.85 6.46 8.8 ...
$ TCH : num NA 1.24 NA NA NA ...
$ TOL : num NA 10.8 NA NA NA ...
$ station: int 28079001 28079035 28079003 28079004 28079039 28079006 28079007 28079009 28079038 28079011 ...
$ year : num 2001 2001 2001 2001 2001 ...
$ month : num 8 8 8 8 8 8 8 8 8 8 ...
$ day : int 1 1 1 1 1 1 1 1 1 1 ...
, и я сейчас пытаюсь создать график, который показывает среднемесячное общее значение каждого загрязнителя. Итак, в идеале одна линия / кривая с месяцами, нанесенными на ось X, чтобы увидеть, есть ли сезонность. До сих пор я делал это (ниже) с помощью dplyr:
madrid_season <- madrid %>%
group_by(month, year) %>%
summarise(BEN_mean = mean(BEN, na.rm = TRUE),
CO_mean = mean(CO, na.rm = TRUE),
EBE_mean = mean(EBE, na.rm = TRUE),
NMHC_mean = mean(NMHC, na.rm = TRUE),
NO_2_mean = mean(NO_2, na.rm = TRUE),
O_3_mean = mean(O_3, na.rm = TRUE),
PM10_mean = mean(PM10, na.rm = TRUE),
SO_2_mean = mean(SO_2, na.rm = TRUE),
TCH_mean = mean(TCH, na.rm = TRUE),
TOL_mean = mean(TOL, na.rm = TRUE))
, а затем суммирую средние значения (исключая столбец месяца и года):
madrid_season$tot <- rowSums(madrid_season[,2:11], na.rm = TRUE)
, а затем я попробуйте построить график:
p4 <- ggplot(madrid_season, aes(x=month,y=tot))+geom_point()+geom_line()
, за исключением того, что он показывает общее среднемесячное значение для каждого года, а не для одного месяца для каждого года, поэтому я получаю причудливый вид графика.
Я думаю, что мне нужна помощь с использованием dplyr в этом случае (или открыт для других предложений!)