LoginSignup
1
1

More than 1 year has passed since last update.

Rで時系列データを作成する・可視化Tips

Posted at

Rで時系列データを作成する

目的

  • プレゼンや関数のテストで、時系列データのサンプルを手元で作成する
  • Dateのシーケンスデータ作成のTips
  • ggplot2による可視化のTips

手順

  1. サンプルデータをdataframe型で作成
  2. 作成したサンプルデータの確認 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))

image.png

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))

image.png

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))

image.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1