【问题标题】:R some time stamps changing to NAR 一些时间戳更改为 NA
【发布时间】:2012-03-02 10:14:19
【问题描述】:

我的代码正在读取 CSV 文件并将时间戳列转换为 R 时间格式

DF <- read.csv("DF.CSV",head=TRUE,sep=",")

DF[51082,1]
[1] 03/01/2012 19:29


DF[1,1]
[1] 02/24/12 00:29

它正确读取并按预期显示上述2行

DF$START <- as.POSIXct(strptime(paste(DF$START),format="%m/%d/%y %H:%M"))

DF[1,1]
[1] "2012-02-24 00:29:00 GMT"

DF[51082,1]
[1] NA

在使用 strptime 将它们转换为 R 时间格式然后再次显示它们之后,一些值具有 NA 并且没有显示错误消息或我能弄清楚的原因

【问题讨论】:

    标签: r timestamp


    【解决方案1】:

    您(至少)有两种不同的日期格式, %Y 中的一个(4 位数年份),%y 中的一个(2 位数年份)。 除非 12 真的意味着 12AD,否则您需要同时尝试。

    DF <- data.frame( 
      START = c(
        "03/01/2012 19:29",
        "02/24/12 00:29"
      ), 
      stringsAsFactors = FALSE 
    )
    coalesce <- function (x, ...) {
      z <- class(x)
      for (y in list(...)) {
        x <- ifelse(is.na(x), y, x)
      }
      class(x) <- z
      x
    }
    DF$START <- coalesce(
      as.POSIXct(strptime(DF$START, format="%m/%d/%y %H:%M")),
      as.POSIXct(strptime(DF$START, format="%m/%d/%Y %H:%M"))
    )
    #                 START
    # 1 2012-03-01 19:29:00
    # 2 2012-02-24 00:29:00
    

    【讨论】:

      【解决方案2】:

      尝试使用这个:

      > DF$START <- as.POSIXct(strptime(paste(DF$START),format="%m/%d/%Y %H:%M"))
      

      这会将年份与世纪相加。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-21
        • 1970-01-01
        • 1970-01-01
        • 2018-11-27
        相关资源
        最近更新 更多