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
引数
日時オブジェクト(POSIXct、POSIXlt、Date、chron、yearmon、yearqtr、zoo、zooreg、timeDate、xts、its、ti、jul、timeSeries、fts)を指定します。
論理値を指定します。
wdayでのみ使用できます。
- TRUE: 曜日は「Sunday」のように文字列の順序付き要素として表示
- FALSE: 曜日は数値として表示
論理値を指定します。
wday でのみ使用できます。
- FALSE: 曜日は「Sunday」のように文字列の順序付き要素として表示
- TRUE: ラベルの省略形(「Sun」など)が表示
label = FALSE の場合、abbr は無視されます。
ISO規則に従って週の開始日を指定します。
1は月曜日、7は日曜日(デフォルト)を表します。label = FALSEでweek_start = 7の場合、日曜日には1、月曜日には2、といった具合になります。label = TRUEの場合、返される値は週の開始日を第1レベルとする係数です(例:week_start = 7の場合、日曜日)。lubridate.week.startオプションを設定することで、このパラメータをグローバルに制御できます。
曜日名に使用するロケールを指定します。
デフォルトは現在のロケールです。
(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"