【R】lubridate

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

Add a Comment

メールアドレスが公開されることはありません。