as.Dateするときはタイムゾーンをちゃんと指定しよう問題

POSIXctな時刻データにas.Dateすると、1日前の日付に変わってしまう。

> as.POSIXct("2001-01-01 00:00:01")
[1] "2001-01-01 00:00:01 JST"
> as.Date(as.POSIXct("2001-01-01 00:00:01"))
[1] "2000-12-31"

これはタイムゾーンを指定しないとGMTと解釈されるためであり、タイムゾーンを適切に指定すれば問題ない。

> as.Date(as.POSIXct("2001-01-01 00:00:01"), tz = "Asia/Tokyo")
[1] "2001-01-01"

怖い。