我有以下数据框,我正在尝试计算向量中日期之间的差异,并将其存储为新的。
Reportnumber OpenedDate
00001 22/1/2016 5:52:12 PM
00002 20/1/2016 4:15:06 PM
00003 18/1/2016 1:09:46 PM
00004 15/1/2016 10:47:40 AM
00005 15/1/2016 10:32:37 AM
00006 14/1/2016 2:13:48 PM
00007 14/1/2016 11:12:29 AM
00008 14/1/2016 10:17:30 AM
00009 12/1/2016 2:25:03 PM
在使用difftime
获取差异之前,我尝试将时间转换为24小时格式并删除上午/下午,我正在执行以下操作:
dataset$convertedDate <- as.POSIXct('dataset$OpenedDate', format="%d/%b/%Y %H:%M:%s")
我在控制台中没有收到错误,但dataset$convertedDate
向量没有更新。
这是解决问题的正确方法吗?
答案 0 :(得分:3)
<强>更新强>
为facepalm做好准备。
仔细查看您正在进行的通话:
dataset$convertedDate <- as.POSIXct('dataset$OpenedDate', format="%d/%b/%Y %H:%M:%s")
您正在传递'dataset$OpenedDate'
而不是dataset$OpenedDate
。换句话说,您实际上是将文本字符串传递给as.POSIXct()
!我确认将字符串传递给as.POSIXct()
确实会返回NA
,这就是您所看到的。
您还错过了PM
(%p
)的格式参数。请尝试以下操作,假设时区为UTC
(您可以根据需要进行更改):
as.POSIXct(df$OpenedDate, format="%d/%m/%Y %I:%M:%S %p", tz="UTC")
<强>输出:强>
[1] "2016-01-22 17:52:12 UTC" "2016-01-20 16:15:06 UTC"
数据:强>
df <- data.frame(Reportnumber=c('00001', '00002'),
OpenedDate=c('22/1/2016 5:52:12 PM', '20/1/2016 4:15:06 PM'),
ClosedDate=c('25/1/2016 1:35:05 PM', '20/1/2016 4:30:06 PM'))