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

Convert Date and Time to Date+Timestamp

我有一个包含两列的数据集,日期和时间,我想将其转换为包含日期和时间的列,例如:"2014-02-01 13:04:05"

我知道这样做的代码是:

as.POSIXct(paste(data$Date, data$Time),format="%Y-%m-%d %H:%M:%S")

这个 returns 有很多正确的值,但由于数据集中的问题,也有 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:00 到 25:59,这意味着与范围 00:00 - 23:59 有 2 小时的差异...所以为什么你不只是从你的约会中恢复两个小时吗?比如“2014-01-3125:30:00”会变成“2014-01-3123:30:00”,不是吗?

如果这就是您想要的,我想这应该可行:

my.lt <- as.POSIXlt("2014-03-09 14:00:00")

my.lt$hour <- my.lt$hour - 2

使用来自 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"