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
Затем я попытался и как.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
Проблема возникает из-за первого значения "временных"
1 1960-01-01 01:00:00
но это должно быть 1960-01-01 00:00:00, так как это предоставленный источник, и первое значение "tiempo" равно 0. Кажется, что час был добавлен к каждому разу.
Может я что-то упускаю при настройке происхождения? Или при чтении файла h5? Любая идея?
заранее спасибо
PD: я не могу предоставить пример данных, так как файл h5 очень большой.
ПРАВИЛЬНЫЙ КОД Благодаря ответу ottlngr и комментарию Ричарда Телфорда, проблема заключалась в том, что проблема с часовым поясом была решена путем добавления tz= "UTC"
temps<-as.data.frame(as.POSIXct(tiempo, origin = "1960-01-01 00:00:00",tz = "UTC"))
1 ответ
Возможно, вам следует использовать tz
аргумент в as.POSIXct()
, но трудно сказать без образцов данных. Посмотрите на этот вопрос, он может вам помочь: Изменить часовой пояс в объекте POSIXct