【发布时间】:2020-07-01 03:34:51
【问题描述】:
我有一个名为“马德里”的数据框,其中包含空气污染物的测量值以及日期、年份、月份和日期。有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 需要帮助(或接受其他建议!)
【问题讨论】:
-
您想如何在情节中显示年份和月份?一个 x 轴,所有年份和月份按时间顺序排列?每年的叠加地块?每年一个小组?
-
@user2332849 是的,如果可能的话,我希望按时间顺序排列年份和月份
-
您确定要将所有这些空气质量测量值相加吗?
-
在 x 轴上放一个
Date类变量,就像每个月的第一天。添加一列as.Date(paste(year, month, "01", sep = "-"))并将其放在 x 轴上。 -
@dejsdukes:您能否通过分享您的数据样本来重现您的问题,以便其他人可以提供帮助(请不要使用
str()、head()或屏幕截图)?您可以使用reprex和datapasta包来帮助您。另见Help me Help you & How to make a great R reproducible example?
标签: r ggplot2 dplyr time-series