R言語で、年月日時分秒の順に並んでいる文字列または数値をPOSIXctオブジェクトに変換する方法について解説します。時間に関する処理はtidyverseパッケージに含まれているlubridateパッケージを使うのがとても便利です。ここでは、lubridateパッケージのymd_hms()の使用方法についてお伝えします。
目次
ymd_hms()の概要
ymd_hms()は、年月日時分秒の順に並んでいる文字列または数値をPOSIXctオブジェクトに変換するための関数です。ymd_hms()は、すべての非英数字区切り文字(frac = TRUE の場合は “.” を除く)を認識し、異種の日付と時刻の表現を正しく処理します。
ymd_hms()の使い方
ymd_hms(
...,
quiet = FALSE,
tz = "UTC",
locale = Sys.getlocale("LC_TIME"),
truncated = 0
)
ymd_hms()の引数
…
年、月、日、時、分、秒の形式で表された日付の文字ベクトルを指定します。
quiet = FALSE
TRUEの場合、関数は通常のメッセージを表示せずに評価されます。
tz = NULL
日付を解析するタイムゾーンを指定する文字列を指定します。
文字列は、ユーザーの OS で認識されるタイムゾーンである必要があります。
locale = Sys.getlocale(“LC_TIME”)
ロケールを指定します。
使用するロケールについては、localesを参照してください。Linux システムでは、system(“locale -a”)を使用して、インストールされているすべてのロケールを一覧表示できます。
truncated = 0
切り捨てられる形式の数を整数で指定します。
ymd_hms()の戻り値
POSIXct日付時刻オブジェクトのベクトルを返します。
準備
あらかじめ、tidyverseパッケージを読み込んでおきます。
library(tidyverse)
年月日時分秒の順に並んでいる文字列をPOSIXctオブジェクトに変換する
年月日時分秒の順に並んでいる文字列をタイムゾーン日本標準時としたPOSIXctオブジェクトに変換するには次のようにします。
ymd_hms(c("2000-01-01 08:15:30", "2005-06-15 12:30:20"), tz = "Asia/Tokyo")
[1] "2000-01-01 08:15:30 JST" "2005-06-15 12:30:20 JST"
年月日時分秒の順に並んでいる数値をPOSIXctオブジェクトに変換する
年月日時分秒の順に並んでいる数値をタイムゾーン日本標準時としたPOSIXctオブジェクトに変換するには次のようにします。
ymd_hms(c(20000101081530, 20050615123020), tz = "Asia/Tokyo")
[1] "2000-01-01 08:15:30 JST" "2005-06-15 12:30:20 JST"
R×lubridate::ymd_hms 年月日時分秒の順に並んでいる文字列または数値をPOSIXctオブジェクトに変換する