我的代码正在读取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
使用strptime将它们转换为R时间格式,然后再次显示它们的某些值有NA并且没有显示错误消息或者我可以弄明白的原因
答案 0 :(得分:2)
您(至少)有两种不同的日期格式,
一个在%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 :(得分:1)
尝试使用它:
> DF$START <- as.POSIXct(strptime(paste(DF$START),format="%m/%d/%Y %H:%M"))
这增加了一年的世纪。