在R中将变量转换为正确的日期时间格式的问题

时间:2013-04-26 00:08:47

标签: r datetime timestamp chron

我的数据DATA有一个变量TIME,其值以这种格式打印出来:“11/14/2006 20:10”。对于TIME,它的模式是数字,它的类是一个因子。

我需要将TIME转换为正确的日期/时间变量(DTIME),并将新的DTIME作为date.time添加到DATA。我被告知我可能必须强制时间值,以便它们遵循h:m:s格式...考虑字符串操作。以下是我的代码:

 library("chron")

VAR=c(as.character(DATA$TIME))
DT<-t(as.data.frame(strsplit(VAR," ")))
DT[1:3,]
row.names(DT)<-NULL
DT[1:3,]
DTIME<-chron(dates=DT[,1],times=DT[,2],
        format=c("m/d/y","h:m"))

但是一旦我运行最后一行代码,我收到以下错误消息:

Error in convert.times(times., format = format[[2]]) : 
  format h:m may be incorrect
In addition: Warning message:
In is.na(out$s) : is.na() applied to non-(list or vector) of type 'NULL'

我不明白这意味着什么,更不用说如何解决它了。

3 个答案:

答案 0 :(得分:3)

从问题的确切内容中不清楚 - 在这种情况下最好显示dput的输出应用于您的变量 - 但假设您可以使用{{1}将其转换为字符格式或as.character然后只需使用format

as.chron

答案 1 :(得分:1)

使用lubridate - 这是一个非常棒的图书馆,可以为您节省很多精力。

library(lubridate)
x <- "11/14/2006 20:10"
> mdy_hm(x)
[1] "2006-11-14 20:10:00 UTC"

所有lubridate的时间转换功能都遵循非常相似的模式:例如可以使用"2013-04-01"等解析ymd

答案 2 :(得分:1)

您可以使用as.POSIXct将字符串转换为时间。

TIME <- "11/14/2006 20:10"
as.POSIXct(TIME, format="%m/%d/%Y %H:%M", tz='GMT')
## [1] "2006-11-14 20:10:00 GMT"