【发布时间】:2021-03-04 22:20:53
【问题描述】:
我有如下长数据框(注意:DoY:一年中的哪一天,小时:一天中的小时(例如,小时 = 0.5 表示上午 12:30):
Year DoY Hour
2016 126 0.5
2016 126 1
2016 126 1.5
- - -
2016 127 0
2016 127 0.5
- - -
2018 300 23.5
- - -
我正在尝试将这些列合并为单个 DateTime 列(例如 2016-05-05 12:30 AM、2016-05-05 1:00 AM 等)。我尝试了以下代码:
x <- as.numeric(df$Hour)
x.m <- paste(floor(x), round((x-floor(x))*60), sep=":")
df$HourMinute <- x.m
df$DateTime <- strptime(paste0(df$Year, df$DoY, df$HourMinute), format = "%Y%j%H:%M")
上面的代码会产生一些奇怪的输出。一年结束后,它输出 NA 值。如何创建所需的输出列?
【问题讨论】:
-
你能解释一下“一年结束后”是什么意思吗?
-
我所说的“一年结束后”的意思是我上面写的代码可以正常工作一年(例如,2016 年),但它在明年年初(即 2017 年)创造了 NA 值和 2018 年)。
标签: r datetime dplyr lubridate