Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将日期和时间转换为日期+;时间戳_R_Date_Time - Fatal编程技术网

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

R 将日期和时间转换为日期+;时间戳,r,date,time,R,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 因此,我想要的是切断数据$Time,这样,如果超过2

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

因此,我想要的是切断
数据$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-31 25:30:00”将变成“2014-01-31 23:30:00”,不是吗

如果这是你想要的,我想这应该行得通:


my.lt使用lubridate提供的
hms

library(lubridate)
x <- "2014-01-31 25:30:00" # input

as.Date(x) + hms(sub(".* ", "", x))

不完全是这样,我的问题是,你不能只从时间中减去2小时,而是应该在日期中再加一天,因此示例应该这样做:“2014-01-31 25:30:00”将变为“2014-02-01 01:30:00”,那么也许你可以使用我的.lt$mday?我不完全理解?我有超过50万行,所以这不是我可以手动完成的。所以我在想,有可能创建一个LOGIT向量,表示时间是否超过24:00:00小时,然后该向量会表示为真或假。然后使用该LOGIT向量添加另一天,只要它为真。你能帮我吗?
[1] "2014-02-01 01:30:00 UTC"