我有一份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
替换为当天的最后一小时。
答案 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的外部需求来自哪里,但需要它。