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

在R中将变量转换为正确的日期时间格式时出现问题,r,datetime,timestamp,chron,R,Datetime,Timestamp,Chron,我的数据data有一个变量TIME,其值以以下格式打印:“11/14/2006 20:10”。就时间而言,它的模式是数字,它的类别是一个因素 我需要将时间转换为适当的日期/时间变量(DTIME),并将新的DTIME作为date.TIME添加到数据中。我被告知我可能必须强制时间值,以便它们遵循h:m:s格式…想想字符串操作。下面是我的代码: library("chron") VAR=c(as.character(DATA$TIME)) DT<-t(as.data.frame(strspl

我的数据data有一个变量TIME,其值以以下格式打印:“11/14/2006 20:10”。就时间而言,它的模式是数字,它的类别是一个因素

我需要将时间转换为适当的日期/时间变量(DTIME),并将新的DTIME作为date.TIME添加到数据中。我被告知我可能必须强制时间值,以便它们遵循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"))

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

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

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

所有
lubridate
的时间转换函数都遵循非常相似的模式:例如
“2013-04-01”
可以用
ymd
解析,等等。

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

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

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

从问题中不清楚您到底有什么——在这种情况下,最好显示应用于变量的
dput
的输出——但假设您可以使用
as.character
format
将其转换为字符格式,那么只需使用
as.chron

> library(chron)
> TIME <- "11/14/2006 20:10"
> as.chron(TIME, "%m/%d/%Y %H:%M")
[1] (11/14/06 20:10:00)
>库(chron)
>时间为.chron(时间,“%m/%d/%Y%H:%m”)
[1] (11/14/06 20:10:00)

从问题中不清楚您到底有什么——在这种情况下,最好显示应用于变量的
dput
的输出——但假设您可以使用
as.character
format
将其转换为字符格式,那么只需使用
as.chron

> library(chron)
> TIME <- "11/14/2006 20:10"
> as.chron(TIME, "%m/%d/%Y %H:%M")
[1] (11/14/06 20:10:00)
>库(chron)
>时间为.chron(时间,“%m/%d/%Y%H:%m”)
[1] (11/14/06 20:10:00)

您可以使用
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"

TIME您可以使用
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"

时间看起来确实容易多了。不幸的是,我被特别告知要使用chron软件包。但我一定会把它作为我自己的参考!这看起来确实容易多了。不幸的是,我被特别告知要使用chron软件包。但我一定会把它作为我自己的参考!
chron:::parse.format
中似乎存在一个错误,该错误由
chron:::convert.times
调用,其中格式“h:m”的解析不正确,而(比如)“h:m:s”的解析正确。不确定会在哪里报告,但同时使用下面答案中建议的
as.chron
,这似乎是一个很好的解决方法,这将是一个理想的功能,但不是一个bug。时间格式必须是
h
m
s
的排列。在
chron:::parse.format
中,似乎有一个错误,
chron:::convert.times
调用了
parse.format
,其中格式“h:m”没有正确解析,而(比如)“h:m:s”解析正确。不确定会在哪里报告,但同时使用下面答案中建议的
as.chron
,这似乎是一个很好的解决方法,这将是一个理想的功能,但不是一个bug。它在
?chron
中记录了times格式必须是
h
m
s
的排列。R告诉我POSIX软件包“不可用(对于R版本2.15.3)”,您不需要任何软件包。as.POSIXct是一个基本函数。R告诉我POSIX包“不可用(对于R版本2.15.3)”,您不需要任何包。as.POSIXct是一个基本函数。