将日期和时间转换为日期+时间戳

时间:2015-03-31 11:34:41

标签: r date time

我有一个包含两列,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"

2 个答案:

答案 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