【问题标题】:altering hours in posixct array in r更改 r 中 posixct 数组中的小时数
【发布时间】:2013-05-30 12:18:18
【问题描述】:

如果我有一个包含 DateTimes 的数组:

> head(DateTime)
[1] "2010-04-23 13:00:00 UTC" "2010-04-23 14:00:00 UTC" "2010-04-23 15:00:00 UTC"
[4] "2010-04-23 16:00:00 UTC" "2010-04-23 17:00:00 UTC" "2010-04-23 18:00:00 UTC"

还有另一个小时值数组:

> head(hour_vals)
[1] 20 20 20 20 20 20

如何将 DateTime 中的小时数更改为与 hour_vals 中的小时数相同,例如:

> head(FinalResult)
[1] "2010-04-23 20:00:00 UTC" "2010-04-23 20:00:00 UTC" "2010-04-23 20:00:00 UTC"
[4] "2010-04-23 20:00:00 UTC" "2010-04-23 20:00:00 UTC" "2010-04-23 20:00:00 UTC"

【问题讨论】:

    标签: r posixct


    【解决方案1】:

    这是一种方式:

    DateTime.lt <- as.POSIXlt(DateTime)
    DateTime.lt$hour <- 20
    DateTime <- as.POSIXct(DateTime.lt)
    

    POSIXct 将日期时间存储为单个数字(自纪元以来的秒数)不同,POSIXlt 将它们存储为秒、分钟、小时等元组,可以直接访问(参见 ?POSIXlt细节)。 POSIXct 具有较小的内存占用,因此是日期时间对象的首选数据类型,但对于此类任务,暂时转换为 POSIXlt 既简单又有效。

    【讨论】:

    • 请注意:像这样更改 POSIXlt 对象可能会产生无意义的日期时间:例如DateTime.lt &lt;- as.POSIXlt("2013-03-10 01:00:00", tz="America/Chicago"); DateTime.lt$hour &lt;- 2。夏令时在该 TZ 凌晨 2 点开始,因此更新后的 DateTime.lt 实际上并不存在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    相关资源
    最近更新 更多