使用POSIXct时间序列更改时区,R

时间:2014-05-13 07:59:19

标签: r timezone

我在处理时间序列时遇到了麻烦。 R中的区域,我无法弄清楚如何继续。

我有这样的时间序列数据:

df <- data.frame( 
  Date     = seq(as.POSIXct("2014-01-01 00:00:00"), length.out = 1000, by = "hours"),
  price    = runif(1000, min = -10, max = 125),
  wind     = runif(1000, min = 0, max = 2500),
  temp     = runif(1000, min = - 10, max = 25)  
)

现在,日期是UTC时间。我想对数据进行子集化/过滤,例如我从今天得到的值(今天是2014-05-13):

df[ as.Date(df$Date) == Sys.Date(), ]

然而,当我这样做时,我得到的数据以:

开头
2014-05-13 02:00:00

而不是:

2014-05-13 00:00:00

因为我目前处于CEST时间,这是UTC时间后两小时。所以我尝试更改数据:

df$Date <- as.POSIXct(df$Date, format = "%Y-%m-%d %H", tz = "Europe/Berlin")

然而这不起作用。我尝试了各种各样的变化,比如将它剥离到角色,然后转换等等,但我把头靠在墙上,我猜我有一些简单的东西丢失了。

1 个答案:

答案 0 :(得分:1)

为避免使用像这样的时区问题,请使用format获取日期的字符表示形式:

df[format(df$Date,"%Y-%m-%d") == Sys.Date(), ]