1

我的数据 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'

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

4

3 回答 3

4

从问题中不清楚你到底有什么——在这种情况下,最好显示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)
于 2013-04-26T00:58:26.883 回答
1

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

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

Alllubridate的时间转换函数遵循非常相似的模式:例如"2013-04-01"可以用ymd等解析。

于 2013-04-26T00:36:38.343 回答
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"
于 2013-04-26T01:39:17.227 回答