改变r中posixct数组的小时数

时间:2013-05-30 12:18:18

标签: r posixct

假设我有一个包含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中的小时数更改为相当于小时数的小时数,例如:

> 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"

1 个答案:

答案 0 :(得分:1)

这是一种方式:

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

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