R as.POSIXct时区问题

时间:2016-03-07 17:30:29

标签: r posixct

我对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") 

enter image description here

时间序列从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显示的正确时间序列?请帮我!

感谢。

1 个答案:

答案 0 :(得分:5)

如果您在未指定时区的情况下使用as.POSIXct,则会假定您输入的时间是utc,并且还假设您希望将它们转换为本地时区。为什么它使这些经常错误的假设超出我的范围...
试试as.POSIXct(..., tz=<enter your timezone>)

如果您不知道自己的时区,Sys.timezone(location = TRUE)会告诉您时区是什么。