在R中将变量转换为正确的日期时间格式时出现问题
我的数据data有一个变量TIME,其值以以下格式打印:“11/14/2006 20:10”。就时间而言,它的模式是数字,它的类别是一个因素 我需要将时间转换为适当的日期/时间变量(DTIME),并将新的DTIME作为date.TIME添加到数据中。我被告知我可能必须强制时间值,以便它们遵循h:m:s格式…想想字符串操作。下面是我的代码:在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
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是一个基本函数。