создание объекта времени в R - PullRequest
2 голосов
/ 13 января 2012

У меня есть следующие данные

>d
2010-07-02
>t
835

Я ввожу следующую команду

>dt<-paste(d,t)
>dt
"2010-07-02 835" 

Затем я выдаю следующую команду, и она возвращает NA, как показано ниже:

>dtt<-as.POSIXlt(strptime(dt,'%Y-%m-%d %H%M'))
>dtt
 NA

поэтому я сделал следующее изменение

>t=1001

и теперь, когда я запускаю dt, а затем dtt, он работает нормально, возвращая

dtt "2010-07-0210:01:00 "

поэтому мне кажется, что у него проблема с первой цифрой часа, равной 0, поэтому, когда ЧЧММ меньше 1000, он генерируетNA.Может кто-нибудь, пожалуйста, предложите, как я это исправить.спасибо!

1 Ответ

4 голосов
/ 13 января 2012

Используйте sprintf для форматирования строки времени, прежде чем передать ее в as.POSIXlt:

d <- "2010-07-02"
h <- 835

dtt <- sprintf("%s %04d", d, h)
as.POSIXlt(dtt, format="%Y-%m-%d %H%M")
[1] "2010-07-02 08:35:00"

Строка "%s %04d" указывает sprintf объединить d в строку (% s) иh как строка фиксированной ширины длины 4 с начальными нулями (% 04d).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...