R as.POSIXct 时区问题
R as.POSIXct timezone issue
我对 R 中的 as.POSIXct 感到困惑。
我使用以下代码将列中的值转换为具有日期和时间的一列。
fname$DateTime <- as.POSIXct(paste(fname$yy, fname$mm, fname$dd, fname$HH, fname$MM), format = "%y %m %d %H %M")
然后,我给作图设定了时间限制
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")
时间序列从 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)
会告诉您所在的时区。
我对 R 中的 as.POSIXct 感到困惑。
我使用以下代码将列中的值转换为具有日期和时间的一列。
fname$DateTime <- as.POSIXct(paste(fname$yy, fname$mm, fname$dd, fname$HH, fname$MM), format = "%y %m %d %H %M")
然后,我给作图设定了时间限制
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")
时间序列从 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)
会告诉您所在的时区。