R×lubridate::as.period オブジェクトをPeriodに変換する

R言語のlubridateパッケージに含まれているas.period()関数について解説します。この関数は、「直感に合わせた、カレンダー通りの時間幅(○ヶ月、○年など)を計算・表現したい」ときに使える関数です。Rの標準機能やduration(期間)のままだと、1年を「一律365日(または31,536,000秒)」として機械的に扱ってしまいますが、as.period()を使うことでうるう年や大小の月(30日/31日)を自動で考慮してくれます。

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

概要

as.period()は、IntervalおよびDurationdifftimenumericクラスのオブジェクトを、指​​定された単位を持つPeriodクラスのオブジェクトに変換するための関数です。

使い方


as.period(x, unit, ...)

引数

x

intervalまたはdifftime、numericオブジェクトを指定します。

unit

期間を構築する時間単位を指定する文字列を指定します。
unitは、as.period.numericメソッドとas.period.intervalメソッドでのみ実装されています。as.period.intervalメソッドの場合、as.periodは指定された単位以下の単位に期間を変換します。

as.periodに渡す追加の引数を指定します。

戻り値

Periodオブジェクトを返します。

使用例

準備

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


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

Periodに変換する

IntervalオブジェクトをPeriodオブジェクトに変換するには次のようにします。


interval(ymd("2000-01-01"), ymd("2010-06-30")) |>
  as.period()

[1] "10y 5m 29d 0H 0M 0S"

参考文献