R×lubridate::day 日時オブジェクトの日要素を取得または設定する

R言語のlubridateパッケージに含まれているday()関数について解説します。この関数は、「日付データから『何日(1〜31の数値)』の部分だけをピンポイントで取り出したい(または書き換えたい)」ときに使える関数です。年や月の情報は無視して、純粋に「日付の数字」だけに注目して処理を行いたい場合に役立ちます。

lubridateパッケージは、日付と時間データを操作するための強力で便利な関数を多く取り扱っています。また、Rのデータサイエンス向け主要パッケージ群であるtidyverseパッケージにも含まれています。

概要

day()は、日時オブジェクトの日要素を取得または設定するための関数です。

使い方


day(x)

mday(x)

wday(
  x,
  label = FALSE,
  abbr = TRUE,
  week_start = getOption("lubridate.week.start", 7),
  locale = Sys.getlocale("LC_TIME")
)

qday(x)

yday(x)

day(x) <- value

mday(x) <- value

qday(x) <- value

qday(x) <- value

wday(x, week_start = getOption("lubridate.week.start", 7)) <- value

yday(x) <- value

引数

x

日時オブジェクト(POSIXct、POSIXlt、Date、chron、yearmon、yearqtr、zoo、zooreg、timeDate、xts、its、ti、jul、timeSeries、fts)を指定します。

label = FALSE

論理値を指定します。
wdayでのみ使用できます。

  • TRUE: 曜日は「Sunday」のように文字列の順序付き要素として表示
  • FALSE: 曜日は数値として表示
abbr = TRUE

論理値を指定します。
wday でのみ使用できます。

  • FALSE: 曜日は「Sunday」のように文字列の順序付き要素として表示
  • TRUE: ラベルの省略形(「Sun」など)が表示

label = FALSE の場合、abbr は無視されます。

week_start = getOption("lubridate.week.start", 7)

ISO規則に従って週の開始日を指定します。
1は月曜日、7は日曜日(デフォルト)を表します。label = FALSEでweek_start = 7の場合、日曜日には1、月曜日には2、といった具合になります。label = TRUEの場合、返される値は週の開始日を第1レベルとする係数です(例:week_start = 7の場合、日曜日)。lubridate.week.startオプションを設定することで、このパラメータをグローバルに制御できます。

locale = Sys.getlocale("LC_TIME")

曜日名に使用するロケールを指定します。
デフォルトは現在のロケールです。

value

(⁠wday<-⁠の場合)現在のロケールまたは英語での曜日を表す数値または文字列を指定します。省略可能です。文字列の場合、week_startの値は無視されます。

使用例

準備

あらかじめ、tidyverseパッケージまたはlubridateパッケージを読み込んでおきます。


# library(tidyverse)でもよい
library(lubridate)

日を取得する

日を取得するには次のようにします。


x <- ymd(c("2001-01-01", "2002-02-02", "2003-03-03"))
day(x)

[1] 1 2 3

日を設定する

日を設定するには次のようにします。


day(x) <- c(11, 12, 13)
x

[1] "2001-01-11" "2002-02-12" "2003-03-13"

参考文献