我对R中的as.POSIXct感到困惑.
我使用以下代码将列中的值转换为具有日期和时间的列.
fname$DateTime <- as.POSIXct(paste(fname$yy, fname$mm, fname$dd, fname$HH, fname$MM), format = "%y %m %d %H %M")
Run Code Online (Sandbox Code Playgroud)
然后,我设定了绘图的时间限制.
lims <- as.POSIXct(strptime(c("2015-10-23 4:00","2015-10-23 16:00"), format = "%Y-%m-%d %H:%M"))
Temp <- ggplot(DF, aes(x=DateTime, y=Temp)) + geom_line(aes(x=DateTime, y=Temp),colour="blue", alpha = 0.8) + scale_x_datetime(limits =lims, breaks=date_breaks("1 hour"), labels=date_format("%m/%d %H:%M")) + facet_wrap( ~ ID, ncol=4)
Temp + geom_vline(xintercept=as.numeric(as.POSIXct("2015-10-23 10:30")), linetype=4, colour="purple")
Run Code Online (Sandbox Code Playgroud)
时间序列从10月23日08:00开始,而不是10/23 4:00; 结束于10/23 20:00而不是10/23 16:00.垂直线显示在10/23 14:30而不是10/23 10:30.这是一个4小时的时间班!
那是怎么回事?如何在数据框中显示DateTime显示的正确时间序列?请帮我!
谢谢.
如果您在as.POSIXct未指定时区的情况下使用,则假定您输入的时间为utc,并且还假定您希望将它们转换为本地时区.为什么它使这些经常错误的假设超出我的范围...
尝试as.POSIXct(..., tz=<enter your timezone>)
如果你不知道你的时区,Sys.timezone(location = TRUE)会告诉你你的时区是什么.