Происхождение даты R для времени в секундах

У меня ежедневно есть временной ряд в секундах с момента запуска задания (00:00 UTC). Поскольку я хочу построить временные ряды других данных, я хочу преобразовать временные ряды в секундах в даты. Все данные поступают из файла hdf5, прочитанного с помощью пакета rhdf5

>tiempo=h5read("rams2.h5","t_coords")
> class(tiempo)
[1] "array"
> head(tiempo)
[1]    0 1800 3600 5400 7200 9000

Затем я попробовал и as.POSIXct создать фрейм данных (для последующего использования с ggplot2).

> temps<-as.data.frame(as.POSIXct(tiempo, origin = "1960-01-01 00:00"))
> class(temps)
[1] "data.frame"
> head(temps)
  as.POSIXct(tiempo, origin = "1960-01-01 00:00")
1                             1960-01-01 01:00:00
2                             1960-01-01 01:30:00
3                             1960-01-01 02:00:00
4                             1960-01-01 02:30:00
5                             1960-01-01 03:00:00
6                             1960-01-01 03:30:00

Проблема возникает из-за первого значения "temps".

1 1960-01-01 01:00:00

но это должно быть 1960-01-01 00:00:00, поскольку это предоставленный источник, а первое значение "tiempo" равно 0. Кажется, что каждый раз добавлялся час.

Может я что то упускаю при установке origin? Или при чтении файла h5? Любая идея?

заранее спасибо

PD: Я не могу предоставить данные для примера, так как файл h5 очень большой.

ПРАВИЛЬНЫЙ КОД. Благодаря ответу ottlngr и комментарию Ричарда Телфорда проблема заключалась в том, что проблема с часовым поясом была решена путем добавления tz = "UTC"

temps<-as.data.frame(as.POSIXct(tiempo, origin = "1960-01-01 00:00:00",tz = "UTC"))

person pacomet    schedule 30.01.2017    source источник
comment
Я хотел бы получать комментарии от голосов против, чтобы я мог улучшить вопрос, спасибо.   -  person pacomet    schedule 30.01.2017
comment
Вероятно, проблема с часовым поясом: as.POSIXct(1, origin = "1960-01-01 00:00", tz = "UTC") дает полночь (это будет 1:00 по центральноевропейскому времени).   -  person Richard Telford    schedule 30.01.2017


Ответы (1)


Возможно, вам следует использовать аргумент tz в as.POSIXct(), но трудно сказать без выборочных данных. Взгляните на этот вопрос, он может вам помочь: Изменить часовой пояс в объекте POSIXct

person ottlngr    schedule 30.01.2017