Я знаю, что подобные вещи обсуждались, но вот несколько вещей, на которые я пока не нашел ответов.
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"
Может кто-нибудь сказать мне, почему, есливвод даты, я не могу получить полночь 30 января, хотя я указал правильный часовой пояс?Хотя, если ввод - символьная строка, тогда я в порядке.
2: преобразование даты / символов.
Оба ужасно медленные.Затем я обнаружил, что преобразовать строку символов в Date на самом деле намного быстрее, сначала преобразовав ее в 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
Я сейчас растерялся.Есть ли более быстрый и элегантный способ конвертировать персонажа в дату?И дата для персонажа вместо as.character, что тоже довольно медленно?
Заранее спасибо!