У меня есть переменная POSIXct со значением «2012-04-15 16:49:36 CEST». Функция возвращает формат год, неделю года и день недели в десятичных числах, для этого примера 2012 15 0. описания формата для тех, кто менее знакомы с ним:format.POSIXct to as.POSIXct проблема преобразования
- % Y: Год с веком.
- % W: Неделя года в виде десятичного числа (00-53) с понедельника в качестве первого дня недели (и обычно с в первый понедельник года как день 1 недели 1). Британская конвенция.
- % w: День недели как десятичное число (0-6, воскресенье 0).
Затем я пытаюсь преобразовать значения обратно в переменную POSIXct и произойдет что-то неожиданное. Когда я читаю значения, функции, похоже, интерпретируют неверную дату (2012-04-08). Однако неожиданность возникает, когда я делаю ту же процедуру со вторым примером, использующим Sys.time(), и работает, как и ожидалось. Может кто-нибудь объяснить мне, почему это не работает в первом примере?
(TS <- structure(1334501376, class = c("POSIXct", "POSIXt")))
(TS_YWw <- format(TS,format="%Y %W %w"))
as.POSIXct(TS_YWw,format="%Y %W %w")
(TS <- Sys.time())
(TS_YWw <- format(TS,format="%Y %W %w"))
as.POSIXct(TS_YWw,format="%Y %W %w")
Выход
> (TS <- structure(1334501376, class = c("POSIXct", "POSIXt")))
[1] "2012-04-15 16:49:36 CEST"
> (TS_YWw <- format(TS,format="%Y %W %w"))
[1] "2012 15 0"
> as.POSIXct(TS_YWw,format="%Y %W %w")
[1] "2012-04-08 CEST"
>
> (TS <- Sys.time())
[1] "2013-05-16 15:27:44 CEST"
> (TS_YWw <- format(TS,format="%Y %W %w"))
[1] "2013 19 4"
> as.POSIXct(TS_YWw,format="%Y %W %w")
[1] "2013-05-16 CEST"
Кстати, я побежал код на 32-битной машине Windows XP с R 2.15.3. Спасибо вам всем!
Это иллюстрирует проблему лучше: 'format (as.POSIXct (" 2012-01-01 CEST "), format ="% Y% W% w "); as.POSIXct ("2012 1 0", format = "% Y% W% w") '. 2012-01-01 было воскресенье. Та же проблема существует и с 2006 годом, которая также началась в воскресенье. – Roland
Эта ошибка известна: https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=15195 – Roland
Эта ошибка исправлена недавно: http://sourceware.org/bugzilla/show_bug.cgi?id = 15100 – Emer