NA для 1 конкретной даты при преобразовании дат из "символьного" формата в "POSIXct" с as.POSIXct - PullRequest
1 голос
/ 27 февраля 2020

Я конвертирую строковый вектор в формат даты с помощью as.POSIXct (). Вот странная вещь:

as.POSIXct("2017-03-26 03:00:00.000",format="%Y-%m-%d %H")

#Gives

"2017-03-26 03:00:00 CEST"

#While

as.POSIXct("2017-03-26 02:00:00.000",format="%Y-%m-%d %H")

#Outputs
NA

Это действительно сбивает с толку и расстраивает. Похоже, что функции действительно не нравятся указанные c время: 02: 00: 00.000

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Это была проблема перехода на летнее время, время: «2017-03-26 02: 00: 00.000» в Швеции не существует, поскольку мы потеряли час этой даты при переходе на «летнее время».

1 голос
/ 27 февраля 2020

Мы можем указать %T для времени. В формате есть минуты, секунды и миллисекунды. Таким образом, %H соответствует только часовой части

as.POSIXct("2017-03-26 02:00:00.000",format="%Y-%m-%d %T")
[1] "2017-03-26 02:00:00 EDT"

Или для учета миллисекунд

as.POSIXct("2017-03-26 02:00:00.000",format="%Y-%m-%d %H:%M:%OS")
#[1] "2017-03-26 02:00:00 EDT"

Или с использованием lubridate

library(lubridate)
ymd_hms("2017-03-26 02:00:00.000")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...