2012-03-02 68 views
0

我的代碼是在CSV文件讀取和時間戳列轉換到R時間格式ř一些時間戳變更爲NA

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,並且沒有錯誤消息顯示或理由認爲我可以計算出

回答

2

您有(至少)兩種不同的日期格式, 一個在%Y(4位數字年),一個在%y(兩位數年份)。 除非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

嘗試使用這個:

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

這增加了與世紀的一年。