У меня ежедневно есть временной ряд в секундах с момента запуска задания (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"))
as.POSIXct(1, origin = "1960-01-01 00:00", tz = "UTC")
дает полночь (это будет 1:00 по центральноевропейскому времени). - person Richard Telford   schedule 30.01.2017