将日期和时间转换为日期+时间戳
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"
我有一个包含两列的数据集,日期和时间,我想将其转换为包含日期和时间的列,例如:"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"