R言語のlubridateパッケージに含まれているdays_in_month()関数について解説します。この関数は、「指定した日付の月が、全部で何日あるか(28、29、30、31日)を自動判定して数値で取得したい」ときに使える関数です。カレンダーの「大小の月」や「うるう年」を自動で計算してくれるため、月ごとの日数の違いが影響する計算(日割り計算や月末判定など)に欠かせない関数です。
lubridateパッケージは、日付と時間データを操作するための強力で便利な関数を多く取り扱っています。また、Rのデータサイエンス向け主要パッケージ群であるtidyverseパッケージにも含まれています。
概要
days_in_month()は、日時オブジェクトから月の日数を取得するための関数です。
使い方
days_in_month(x)
引数
x
日時オブジェクト(POSIXct、POSIXlt、Date、chron、yearmon、yearqtr、zoo、zooreg、timeDate、xts、its、ti、jul、timeSeries、fts)を指定します。
戻り値
日時オブジェクトの月要素の日数を表す整数を返します。
使用例
準備
あらかじめ、tidyverseパッケージまたはlubridateパッケージを読み込んでおきます。
# library(tidyverse)でもよい
library(lubridate)
月の日数を取得する
日時オブジェクトから月の日数を取得するには次のようにします。文字列として指定した場合は、自動的にas.POSIXlt.character()関数により変換されます。
days_in_month(c("2000-02-01", "2001-02-01", "2002-02-01", "2003-02-01", "2004-02-01"))
Feb Feb Feb Feb Feb
29 28 28 28 29