#Rで時系列データを作成する
目的
- プレゼンや関数のテストで、時系列データのサンプルを手元で作成する
- Dateのシーケンスデータ作成のTips
- ggplot2による可視化のTips
手順
- サンプルデータをdataframe型で作成
- 作成したサンプルデータの確認 by ggplot2
Tips
1-1. as.Date() を使用した時のseq()パラメータ設定
2-3. floor_date() を使用して日付データ"yyyy-mm-dd"を月頭の日別に集約して可視化
1-1. サンプルデータ(月別推移)の作成
dat<-data_frame(
date= seq(as.Date("2017-01-01"),
length=48,#lengthで期間指定、
by="months"),#byで単位指定
y = rnorm(length(date), 1000,200)#適当な乱数をdateの数だけ作成
)
1-2. サンプルデータをggplotで可視化
#必要に応じてlibrary(tidyverse)
dat %>%
ggplot(aes( x=date, y = y))+
geom_point()+
geom_line()+
ylim(c(0, max(dat$y)+50))
2-1. サンプルデータ(日別)を作成
dat1<-data_frame(
date= seq(as.Date("2017-01-01"),
length=4*365,#length=365*4年分に設定
by="day"), #byはdayに設定
y = rnorm(length(date), 1000, 100) ##適当な乱数をdateの数だけ作成
)
2-2. サンプルデータ(日別)をggplotで可視化
dat1 %>%
ggplot(aes( x=date, y = y))+
geom_line(colour = "blue",alpha=0.5)+
ylim(c(0, mean(dat1$y)*2))
2-2のままだとみにくいので、
lubridateパッケージのfloor_date関数を使って各月の初日の日付に変換して、月別に集約する。
floor_data関数は任意の日付を該当する月の初日を返してくれる。
2-3. サンプルデータ(日別)を月別にまとめて可視化
#floor_date()の確認
#"month"で月を指定して、月の初日を返してくれる
#"year"にすると、年の初日を返す。
floor_date(ymd("2021-03-14"),"month")
>[1] "2021-03-01"
floor_date(ymd("2021-03-14"),"year")
>[1] "2021-01-01"
dat1 %>%
mutate(ym = floor_date(dat1$date,unit = "month")) %>%
group_by(ym) %>%
summarise( ym_y = sum(y)) %>%
ggplot(aes( x=ym, y = ym_y))+
geom_point(colour = "blue",alpha=0.5)+
geom_line(colour = "blue",alpha=0.5)+
ylim(c(0, mean(dat1$ym_y)*2))
追記:日付ラベルの調整
scale_x_date()を使用して、date_breaks, date_labels等を使用して、調整する。
scale_x_date(date_breaks = "3 day",
date_labels = "%m/%d"
)