[R]書式を指定して文字列型ベクトルを日付型ベクトルに変換する
strptime関数を使う。戻り値はPOSIXlt型(時刻とタイムゾーンを持つ日付型で、実態は秒単位の整数型)。
> s <- c("2001-02-03", "2002-04-05")
> strptime(s, "%Y-%m-%d")
[1] "2001-02-03 JST" "2002-04-05 JST"
> s <- c("2001/02/03", "2002/04/05")
> strptime(s, "%Y/%m/%d")
[1] "2001-02-03 JST" "2002-04-05 JST"
> dt <- strptime(s, "%Y/%m/%d")
> class(dt)
[1] "POSIXlt" "POSIXt"
POSIXlt型のため、時刻も扱える(タイムゾーンも)。
> s <- c("2001-02-03T12:24:56", "2002-04-05T01:02:03")
> strptime(s, "%Y-%m-%dT%H:%M:%S")
[1] "2001-02-03 12:24:56 JST" "2002-04-05 01:02:03 JST"
POSIXlt型の実態は秒単位の整数型のため、整数で演算をすると、以下のような結果になる。
> dt <- strptime(s, "%Y-%m-%dT%H:%M:%S")
> dt
[1] "2001-02-03 12:34:56 JST" "2002-04-05 01:02:03 JST"
> dt + 3
[1] "2001-02-03 12:34:59 JST" "2002-04-05 01:02:06 JST"
書式はstrptimeに書かれている。
> ?strptime