我在处理时间序列时遇到了麻烦&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
And not:
2014-05-13 00:00:00
因为我现在是cest时间,比utc时间晚两个小时。所以我试着改变数据:
df$Date <- as.POSIXct(df$Date, format = "%Y-%m-%d %H", tz = "Europe/Berlin")
然而这行不通。我尝试了各种变体,例如将其剥离为字符,然后进行转换等等,但我一直碰壁,我猜我遗漏了一些简单的东西。
为了避免使用这样的时区问题,使用format
来获得日期的字符表示:
df[format(df$Date,"%Y-%m-%d") == Sys.Date(), ]