修复R中缺少的小时和日期?

时间:2015-07-21 16:57:58

标签: r

我有一份1985年(每小时)的日期列表:每天有24小时。我的对象是fg,这是一个例子:

fg

 "1985-01-01 00:30:00 GMT" to "1985-01-01 22:30:00 GMT" then NA # (NA here should be "1985-01-01 23:30:00 GMT")

 "1985-01-02 00:30:00 GMT" to "1985-01-02 22:30:00 GMT" then NA # (NA here should be "1985-01-02 23:30:00 GMT ")

 "1985-01-03 00:30:00 GMT" to "1985-01-03 22:30:00 GMT" then NA

 "1985-01-04 00:30:00 GMT" to "1985-01-04 22:30:00 GMT" then NA

 str(fg)
 POSIXct[1:8760], format: "1985-01-01 00:30:00" "1985-01-01 01:30:00" 

 class(fg)
 [1] "POSIXct" "POSIXt"

每天都缺少23:30:00的最后一小时,因此我希望在此处将NA替换为当天的最后一小时。

1 个答案:

答案 0 :(得分:1)

你应该给我们一个可重复的例子(How to make a great R reproducible example?)。但以下似乎适用于我的数据示例

library(lubridate)
fg <- c(ymd("2015-12-01"), ymd("2015-12-02"), NA)
as.POSIXct(ifelse(is.na(fg), c(as.POSIXct(NA), fg[-length(fg)]) + hours(1), fg), origin="1970-01-01")

注意:我使用lubridate创建示例,但也使用hours函数。

注2:不确定as.POSIXct的外部需求来自哪里,但需要它。