R言語で、日月年時分の順に並んでいる文字列または数値をPOSIXctオブジェクトに変換する方法について解説します。時間に関する処理はtidyverseパッケージに含まれているlubridateパッケージを使うのがとても便利です。ここでは、lubridateパッケージのdmy_hm()の使用方法についてお伝えします。

dmy_hm()の概要

dmy_hm()は、日月年時分の順に並んでいる文字列または数値をPOSIXctオブジェクトに変換するための関数です。dmy_hm()は、すべての非英数字区切り文字(frac = TRUE の場合は “.” を除く)を認識し、異種の日付と時刻の表現を正しく処理します。

dmy_hm()の使い方


dmy_hm(
  ...,
  quiet = FALSE,
  tz = "UTC",
  locale = Sys.getlocale("LC_TIME"),
  truncated = 0
)

dmy_hm()の引数

年、月、日、時、分、秒の形式で表された日付の文字ベクトルを指定します。

quiet = FALSE

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

tz = NULL

日付を解析するタイムゾーンを指定する文字列を指定します。
文字列は、ユーザーの OS で認識されるタイムゾーンである必要があります。

locale = Sys.getlocale(“LC_TIME”)

ロケールを指定します。
使用するロケールについては、localesを参照してください。Linux システムでは、system(“locale -a”)を使用して、インストールされているすべてのロケールを一覧表示できます。

truncated = 0

切り捨てられる形式の数を整数で指定します。

dmy_hm()の戻り値

POSIXct日付時刻オブジェクトのベクトルを返します。

準備

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


library(tidyverse)

日月年時分の順に並んでいる文字列をPOSIXctオブジェクトに変換する

日月年時分の順に並んでいる文字列をタイムゾーン日本標準時としたPOSIXctオブジェクトに変換するには次のようにします。


dmy_hm(c("01-01-2000 08:15", "15-06-2005 12:30"), tz = "Asia/Tokyo")

[1] "2000-01-01 08:15:00 JST" "2005-06-15 12:30:00 JST"

日月年時分の順に並んでいる数値をPOSIXctオブジェクトに変換する

日月年時分の順に並んでいる数値をタイムゾーン日本標準時としたPOSIXctオブジェクトに変換するには次のようにします。


dmy_hm(c(10120000815, 150620051230), tz = "Asia/Tokyo")

[1] "2000-01-01 08:15:00 JST" "2005-06-15 12:30:00 JST"
R×lubridate::dmy_hm 日月年時分の順に並んでいる文字列または数値をPOSIXctオブジェクトに変換する