R 从POSIXct中删除年份,并使用ggplot2绘制ts数据

R 从POSIXct中删除年份,并使用ggplot2绘制ts数据,r,ggplot2,time-series,lubridate,R,Ggplot2,Time Series,Lubridate,我试图从一个多年数据框中删除年份,并用geom_smooth()在x轴上绘制不同年份的日月 我的数据结构最初是这样的: > str(pmWaw) 'data.frame': 52488 obs. of 5 variables: $ date : POSIXct, format: "2014-01-01 00:00:00" "2014-01-01 00:00:00" "2014-01-01 00:00:00" "2014-01-01 01:00:00" ... $ stacja:

我试图从一个多年数据框中删除年份,并用geom_smooth()在x轴上绘制不同年份的日月

我的数据结构最初是这样的:

> str(pmWaw)
'data.frame':   52488 obs. of  5 variables:
 $ date  : POSIXct, format: "2014-01-01 00:00:00" "2014-01-01 00:00:00" "2014-01-01 00:00:00" "2014-01-01 01:00:00" ...
 $ stacja: Factor w/ 273 levels "DsWrocKorzA",..: 26 27 129 26 27 129 26 27 129 26 ...
 $ pm25  : num  100 63 NA 69 36 NA 41 31 NA 37 ...
 $ pm10  : num  122 68 79 77 38 90 43 32 39 38 ...
 $ season: Ord.factor w/ 4 levels "spring (MAM)"<..: 4 4 4 4 4 4 4 4 4 4 ...
接下来,使用stackoverflow上的代码,我以
%m-%d
格式计算了一个月和日变量:

pmWaw$month.day<-format(pmWaw$date, format="%m-%d")

#check new variable type:
> typeof(pmWaw$month.day)
[1] "character"
将新值传递给ggplot会带来三个问题:

ggplot(pmWaw, aes(x=month.day, y=pm25)) + 
geom_jitter(alpha=0.5) +
geom_smooth()

第一个(次要)问题:month.day是一个字符类型的变量,ggplot无法识别它的初始时间序列性质。我可能可以通过手动将比例标签设置为月来克服这一问题

第二个(主要)问题geom_smooth()根本没有计算出来,我不明白为什么

第三个(主要)问题是,我无法解决将
year
添加为两条单独平滑线的分组变量的问题(主要原因是根本不存在geom_smooth)

我的猜测是,所有问题的根源都在于我如何提取月和日格式,并最终得到一个字符类变量


谁能帮我修一下吗?感谢您的任何提示。

看来我找到了一个解决方案:

ggplot(pmWaw, aes(x=month.day, y=pm25, group = year)) + 
geom_point(alpha=0.5) +
geom_smooth(aes(color=factor(year)))
解决问题2和3-几何平滑存在,我可以区分年份。可能不是最好的解决方案,但可能是一个好的起点

ggplot(pmWaw, aes(x=month.day, y=pm25)) + 
geom_jitter(alpha=0.5) +
geom_smooth()
ggplot(pmWaw, aes(x=month.day, y=pm25, group = year)) + 
geom_point(alpha=0.5) +
geom_smooth(aes(color=factor(year)))