R×lubridate::hms 時分秒の順に並んでいる文字列または数値をPeriodオブジェクトに変換する

R言語のlubridateパッケージに含まれているhms()関数について解説します。この関数は、「時→分→秒で表された時間データを、Rの期間(Period)オブジェクトに変換・解析したい」ときに使える関数です。

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

概要

hms()は、時分秒の順に並んでいる文字列または数値をPeriodオブジェクトに変換するための関数です。hms()は、「-」を除くすべての非数値文字を区切り文字として認識します(「-」は負のPeriodを表します)。時、分、秒の解析後、残りの入力は無視されます。

使い方


hms(..., quiet = FALSE, roll = FALSE)

引数

時、分、秒の3つの要素からなる文字ベクトルを指定します。

quiet = FALSE

TRUEの場合、関数は通常のメッセージを表示せずに評価されます。

locale = Sys.getlocale(“LC_TIME”)

真偽値を指定します。
TRUEの場合、小さい単位が従来の制限を超える場合、大きい単位に繰り越されます。例えば、hms(“01:59:120”, roll = TRUE)は、Period”2H 1M 0S”を生成します。

戻り値

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

使用例

準備

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


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

時分秒の順に並んでいる文字列をPeriodオブジェクトに変換する

時分秒の順に並んでいる文字列をPeriodオブジェクトに変換するには次のようにします。


hms(c("08:15:30", "12:30:20"))

[1] "8H 15M 30S"  "12H 30M 20S"

参考文献