时间的 R 日期原点(以秒为单位)
R date origin for time in seconds
我每天都有一个自作业开始以来以秒为单位的时间序列 (00:00h UTC)。因为我想绘制其他数据的时间序列,所以我想将以秒为单位的时间序列转换为日期。所有数据均来自使用包 rhdf5
读取的 hdf5 文件
>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。似乎每次都增加了一个小时。
也许我在设置原点时遗漏了什么?或者在阅读 h5 文件时?有什么想法吗?
提前致谢
PD:我无法提供示例数据,因为 h5 文件非常大。
正确的代码
感谢 ottlngr 的回答和 Richard Telford 的评论,问题是通过添加 tz= "UTC"
解决的时区问题
temps<-as.data.frame(as.POSIXct(tiempo, origin = "1960-01-01 00:00:00",tz = "UTC"))
可能您应该在 as.POSIXct()
中使用 tz
参数,但是 如果没有样本数据很难判断 。看看这个问题,它可能对你有帮助:Change timezone in a POSIXct object
我每天都有一个自作业开始以来以秒为单位的时间序列 (00:00h UTC)。因为我想绘制其他数据的时间序列,所以我想将以秒为单位的时间序列转换为日期。所有数据均来自使用包 rhdf5
读取的 hdf5 文件>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。似乎每次都增加了一个小时。
也许我在设置原点时遗漏了什么?或者在阅读 h5 文件时?有什么想法吗?
提前致谢
PD:我无法提供示例数据,因为 h5 文件非常大。
正确的代码 感谢 ottlngr 的回答和 Richard Telford 的评论,问题是通过添加 tz= "UTC"
解决的时区问题temps<-as.data.frame(as.POSIXct(tiempo, origin = "1960-01-01 00:00:00",tz = "UTC"))
可能您应该在 as.POSIXct()
中使用 tz
参数,但是 如果没有样本数据很难判断 。看看这个问题,它可能对你有帮助:Change timezone in a POSIXct object