我有一个包含两列,Date和Time的数据集,我想将它转换为包含日期和时间的列,例如:"2014-02-01 13:04:05"
。
我知道执行此操作的代码是:
as.POSIXct(paste(data$Date, data$Time),format="%Y-%m-%d %H:%M:%S")
由于数据集中存在问题,这会返回许多正确的值,但也会返回NA。
我的问题出在我的数据集中,该数据集将data$Time
视为因素,时间范围为02:00:00
- 25:59:00
。
所以我想要的是切断data$Time
,如果它超过24:00:00
,它会在日期再添加一天并显示正确的时间。
例如:
"2014-01-31 25:30:00"
将成为"2014-02-01 01:30:00"
答案 0 :(得分:1)
使用来自lubridate的hms
:
library(lubridate)
x <- "2014-01-31 25:30:00" # input
as.Date(x) + hms(sub(".* ", "", x))
,并提供:
[1] "2014-02-01 01:30:00 UTC"
答案 1 :(得分:0)
如果范围从2:00到25:59,则意味着距离00:00 - 23:59的范围有2小时的差异......那你为什么不从你的两个小时内取回日期?例如,“2014-01-31 25:30:00”将成为“2014-01-31 23:30:00”,不是吗?
如果这就是你想要的,我猜这应该有效:
my.lt&lt; - as.POSIXlt(“2014-03-09 14:00:00”)
my.lt $ hour&lt; - my.lt $ hour - 2