也许您的问题的原因是您的数据集中某处有没有时间的日期。尝试以下示例:
library(lubridate)
dates <- as.character(now() + minutes(1:5))
dates <- c(dates,"2015-05-10")
as.POSIXct(dates[1:5])
as.POSIXct(dates)
它首先创建一个向量dates
包含 6 个日期和时间并将它们转换为字符。然后我添加另一个不包含时间的日期(作为字符)。当您运行这两个转换时POSIXct
,只要您包含不带时间的日期,您就会注意到结果中的时间消失了。
因此,在数据的前几行中似乎没有没有时间的日期,但后来可能会有。这个问题很可能有很多解决方案,我只会提出我想到的一个。
第一步是更改读取命令,以便将日期存储为字符而不是因子:
data <- read.csv("C:/RData/house2_electricity_Main.csv",header=FALSE,stringsAsFactors=FALSE)
然后你可以尝试将时间添加到所有没有日期的日期中,然后才转换为 POSIXct:
data$V1 <- ifelse(nchar(data$V1) > 11,data$V1, paste0(data$V1,"00:00:00"))
data$V1 <- as.POSIXct(data$V1)
这适用于我上面的小例子。这不是最优雅的解决方案,也许有人有更好的主意。