R言語のlubridateパッケージに含まれているdmy_h()関数について解説します。この関数は、「海外基準の『日・月・年』の順で書かれたデータで、かつ時間(時)までしか記録されていないテキストを日時型に変えたい」ときに使える関数です。この関数は、「日(Day)→ 月(Month)→ 年(Year)→ 時(Hour)」の順番で並んでいるテキスト(文字列)や数値を、自動で正しい日時オブジェクト(POSIXct型)に変換する関数です。
lubridateパッケージは、日付と時間データを操作するための強力で便利な関数を多く取り扱っています。また、Rのデータサイエンス向け主要パッケージ群であるtidyverseパッケージにも含まれています。
目次
概要
dmy_h()は、日月年時の順に並んでいる文字列または数値をPOSIXctオブジェクトに変換するための関数です。dmy_h()は、すべての非英数字区切り文字(frac = TRUEの場合は “.” を除く)を認識し、異種の日付と時刻の表現を正しく処理します。
使い方
dmy_h(
...,
quiet = FALSE,
tz = "UTC",
locale = Sys.getlocale("LC_TIME"),
truncated = 0
)
引数
年、月、日、時、分、秒の形式で表された日付の文字ベクトルを指定します。
TRUEの場合、関数は通常のメッセージを表示せずに評価されます。
日付を解析するタイムゾーンを指定する文字列を指定します。
文字列は、ユーザーの OS で認識されるタイムゾーンである必要があります。
ロケールを指定します。
使用するロケールについては、localesを参照してください。Linux システムでは、system(“locale -a”)を使用して、インストールされているすべてのロケールを一覧表示できます。
切り捨てられる形式の数を整数で指定します。
戻り値
POSIXct日付時刻オブジェクトのベクトルを返します。
使用例
準備
あらかじめ、tidyverseパッケージまたはlubridateパッケージを読み込んでおきます。
# library(tidyverse)でもよい
library(lubridate)
日月年時の順に並んでいる文字列をPOSIXctオブジェクトに変換する
日月年時の順に並んでいる文字列をタイムゾーン日本標準時としたPOSIXctオブジェクトに変換するには次のようにします。
dmy_h(c("01-01-2000 08", "15-06-2005 12"), tz = "Asia/Tokyo")
[1] "2000-01-01 08:00:00 JST" "2005-06-15 12:00:00 JST"
日月年時の順に並んでいる数値をPOSIXctオブジェクトに変換する
日月年時の順に並んでいる数値をタイムゾーン日本標準時としたPOSIXctオブジェクトに変換するには次のようにします。
dmy_h(c(101200008, 1506200512), tz = "Asia/Tokyo")
[1] "2000-01-01 08:00:00 JST" "2005-06-15 12:00:00 JST"