【发布时间】:2016-09-01 09:54:58
【问题描述】:
我有一个数据框,其中一列列出了一堆日期时间。奇怪的是,该列的数据类型是“整数”。我需要将列强制转换为适当的日期时间数据类型,例如 POSIXct,以便我可以从另一个字段中的时间戳中减去这些时间戳。但是,当我尝试将这些日期时间值强制转换为 POSIXct 时,它们会丢失时间部分。当我尝试在没有先强制转换为另一种数据类型的情况下对日期时间进行数学运算时,R 的行为就好像时间戳的时间部分不存在(它假设每个日期都有一个午夜的时间)。发生了什么,我该如何修复它以便 R 识别时间戳?
> dates[1]
[1] 2016-05-05T16:46:21-04:00
48 Levels: 2016-05-03T06:45:42-04:00 2016-05-03T06:45:43-04:00 ... 2016-05-05T16:50:00-04:00
> typeof(dates)
[1] "integer"
> as.POSIXct(dates[1])
[1] "2016-05-05 EDT"
> as.character(dates[1])
[1] "2016-05-05T16:46:21-04:00"
> as.POSIXct(as.character(dates[1]))
[1] "2016-05-05 EDT"
【问题讨论】:
-
48 Levels暗示 R 将其视为因子。如果您使用过read.csv,请使用stringAsFactors=F -
您的日期时间格式不标准。 R 可能需要一些帮助
as.POSIXct("2016-05-05T16:46:21-04:00", format = "%Y-%m-%dT%H:%M:%S")