1

我有一个可以具有如下值的数据框:

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
4

2 回答 2

4

您的矢量格式不一致,因此将其转换为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)
于 2012-08-17T18:25:25.153 回答
0

the package lubridate may help
here an example - perhaps not the most elegant one - but it hs

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
于 2012-08-17T20:03:31.430 回答