【R】lubridate
2020年11月2日
1. はじめに
lubridate
は、R
で日付型を扱えるようにするパッケージ。
2. インストール
CRANからインストールします。
install.packages("lubridate")
3. つかってみる
適当な日付を用意します。
library(lubridate) dd <- "2020-10-20" str(dd)
> str(dd)
chr "2020-10-20"
でも、このままでは、文字型です。as_date()
関数で日付にできます。
dd_d <- as_date(dd) str(dd_d)
> str(dd_d)
Date[1:1], format: "2020-10-20"
はい、日付になりました。
month day yearの順のデータでしたら、そういう風にmdy()
関数で教えてあげます。
dd1<- "March 18, 2008" dd1_d <- mdy(dd1) str(dd1_d)
> str(dd1_d)
Date[1:1], format: "2008-01-08"
day month yearの順であれば、同じようにdmy()
関数で。
dd2<- "10 March 2008" dd2_d <- dmy(dd2) str(dd2_d)
> str(dd2_d)
Date[1:1], format: "2008-03-10"
せっかくなので、データをとってきてグラフにしてみます。
lubridate characters to dates
のページを参考に、TidyTuesday
のデータを時系列グラフにしました。
library(tidyverse) library(tidytuesdayR) library(lubridate) tuesdata <- tt_load(2020, week = 40) sales <- tuesdata$sales charts <- tuesdata$charts sales <- sales %>% mutate(released = recode(released, "June 23, 2003 (UK)[39]" = "June 23, 2003", "September 1, 2006 (US)[51]" = "September 1, 2006")) sales$released <- mdy(sales$released) sales %>% filter(country %in% c("US", "UK", "JPN")) %>% group_by(year(released), country, artist) %>% summarise(totalsales = sum(sales)) %>% rename(year = `year(released)`) %>% ggplot(aes(x = year, y = totalsales, colour = country, group = country)) + geom_point() + geom_line() + facet_wrap(~ artist) + theme_bw() + labs(y = "Total sales $", x = "Release year")
4. さいごに
日付データを扱えるパッケージlubridate
を使ってみました。