尽管在r中使用as.POSIXct的午夜时间,日期仍未更改

问题描述

我已经尝试过将分数转换为日期时间

daytime = c("0.999259259259259","0.000162037037037037","0.00106481481481481")

as.POSIXct(as.numeric((daytime)) * 24 * 60 * 60,origin = "2019-08-02 ",tz="GMT")

我得到了

"2019-08-02 23:58:56 GMT"  
"2019-08-02 00:00:14 GMT"  
"2019-08-02 00:01:32 GMT"  

但是我应该得到

"2019-08-02 23:58:56 GMT"  
"2019-08-03 00:00:14 GMT"   
"2019-08-03 00:01:32 GMT"

白天太大。我在这里使用3个值作为示例。我正在寻找建议。预先感谢。

解决方法

您可以使用diff()来确定何时输入新的一天。

daytime = c("0.999259259259259","0.000162037037037037","0.00106481481481481")
daytime <- as.numeric(daytime)

(new_day <- cumsum(c(F,diff(daytime) < 0)))
# [1] 0 1 1

as.POSIXct((daytime + new_day) * 24 * 60 * 60,"GMT",origin = "2019-08-02")

# [1] "2019-08-02 23:58:56 GMT"
# [2] "2019-08-03 00:00:14 GMT"
# [3] "2019-08-03 00:01:32 GMT"