私は同様のことが議論されていることを知っていますが、私はまだ答えが見つかりませんでした。日時変換R
1:POSIXct
に日> Sys.timezone()
[1] "EST"
> as.POSIXct("2011-01-30")
[1] "2011-01-30 EST"
> as.POSIXct(as.Date("2011-01-30"))
[1] "2011-01-29 19:00:00 EST"
> as.POSIXct(as.Date("2011-01-30"), tz="EST")
[1] "2011-01-29 19:00:00 EST"
> as.POSIXct(as.Date("2011-01-30"), tz="GMT")
[1] "2011-01-29 19:00:00 EST"
> as.POSIXct(as.Date("2011-01-30"), tz="America/New_York")
[1] "2011-01-29 19:00:00 EST"
> as.POSIXct(as.Date("2011-01-30"), tz="")
[1] "2011-01-29 19:00:00 EST"
誰が入力日付であれば、なぜ、私は私が正しいタイムゾーンを指定したにも関わらず深夜1月30日を取得することはできません教えてもらえますか?一方、入力が文字列の場合はOKです。
2:日付/文字変換。
どちらも非常に遅いです。それから私は、最初POSIXltに変換することにより、それが実際にははるかに高速の日付に文字列を変換することを発見した:
> d3.str = "2011-03-02 23:59:00";
> N=10000
> system.time(for(i in 1:N) r5.dt = as.Date(d3.str))
user system elapsed
1.25 0.00 1.24
> system.time(for(i in 1:N) r6.dt = as.Date(strptime(d3.str, format="%Y-%m-%d")))
user system elapsed
0.37 0.00 0.38
> r5.dt
[1] "2011-03-02"
> r5.dt==r6.dt
[1] TRUE
私は今、混乱しています。文字を日付に変換する、より高速で洗練された方法はありますか?そして、文字の代わりに日付を使用してください。これはかなり遅いです。
ありがとうございます!
ヘイ・ギャビン編集のおかげで!今はもっと良く見えます。 – sunt