【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を使ってみました。