R некоторые метки времени меняются на NA - PullRequest
0 голосов
/ 02 марта 2012

Мой код читает файл 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

Он правильно считывает данные, и две вышеуказанные строки отображаются, как ожидается

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

После преобразования их в формат времени R с использованием strptime и последующего их отображения некоторые значения имеют NA, и сообщение об ошибке не отображается или причина для этого, которую я могу выяснить

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

У вас есть (как минимум) два разных формата даты, один в %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
1 голос
/ 02 марта 2012

Попробуйте использовать это:

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

Это добавляет год с веком.

...