将时间转换为R中的POSIXct

时间:2012-08-17 17:48:11

标签: r

我有一个数据框,可以有这样的值:

p<-c("2012-08-14 9:00", "2012-08-14 7:00:00")

我正在尝试转换为日期时间:

p<-as.POSIXct(p)

this converted everyting to to 2012-08-14 09:00:00

出于某种原因,它不再起作用了。如果你注意到了,我的数据有时会有几秒钟而有时却没有。 你如何强制这是日期时间格式?

我得到这样的错误:

Error in as.POSIXlt.character(p) : 
  character string is not in a standard unambiguous format

2 个答案:

答案 0 :(得分:3)

您的矢量格式不一致,因此请先将其转换为POSIXlt,因为as.POSIXlt.character会检查多种格式。

p <- c("2012-08-14 9:00", "2012-08-14 7:00:00")
plt <- as.POSIXlt(p)
pct <- as.POSIXct(plt)

答案 1 :(得分:0)

包裹润滑剂可能会有所帮助 这里有一个例子 - 也许不是最优雅的一个 - 但它是

p<-c("2012-08-14 9:00", "2012-08-14 7:00:00")

require(lubridate) # 


NewDate <- c()
for (i in 1 : 2)
        {
          if (nchar(unlist(strsplit(p[i], ' '))[2]) == 4) {NewDate <- c(NewDate,       as.character(ymd_hm(p[i])))}
          if (nchar(unlist(strsplit(p[i], ' '))[2]) == 7) {NewDate <- c(NewDate, as.character(ymd_hms(p[i])))}
        }
NewDate