我想用R进行时间序列分析。 我想打从包TIMEDATE和预测的时间序列模型和使用功能。
我在CET时区数据盘中(15分钟的数据,每小时4个数据点)。 3月31日夏令时间实现,我错过了96,我通常有4个数据点。 10月28日我有4个数据点太多,因为时间很转回。
对于我的时间序列模型我总是需要96个数据点,否则盘中季节性得到弄糟。
你有任何这方面的经验? 你知道的R函数或将是帮助自动售货机等数据处理包 - 这是优雅? 谢谢!
我想用R进行时间序列分析。 我想打从包TIMEDATE和预测的时间序列模型和使用功能。
我在CET时区数据盘中(15分钟的数据,每小时4个数据点)。 3月31日夏令时间实现,我错过了96,我通常有4个数据点。 10月28日我有4个数据点太多,因为时间很转回。
对于我的时间序列模型我总是需要96个数据点,否则盘中季节性得到弄糟。
你有任何这方面的经验? 你知道的R函数或将是帮助自动售货机等数据处理包 - 这是优雅? 谢谢!
我曾与来自传感器的水文资料有类似的问题。 我的时间戳在UTC + 1(CET),并没有切换到夏令时(UTC + 2,CEST)。 因为我不希望我的数据是一个小时(这将是UTC,如果使用的情况下)我拿了%z
的转换规范strptime
。 在?strptime
你会发现:
%z
签名在从UTC小时和分钟的偏移,所以-0800比UTC 8小时。
例如:在2012年,从标准时间到DST开关发生在2012-03-25,所以今天没有02:00。 如果你尝试“2012-03-25 02:00:00”转换为POSIXct对象时,
> as.POSIXct("2012-03-25 02:00:00", tz="Europe/Vienna")
[1] "2012-03-25 CET"
你没有得到一个错误或警告,你只能日期没有时间(这种行为记录)。
使用format = "%z"
给出所期望的结果:
> as.POSIXct("2012-03-25 02:00:00 +0100", format="%F %T %z", tz="Europe/Vienna")
[1] "2012-03-25 03:00:00 CEST"
为了促进这一进口,我写了适当的默认值的一个小功能:
as.POSIXct.no.dst <- function (x, tz = "", format="%Y-%m-%d %H:%M", offset="+0100", ...)
{
x <- paste(x, offset)
format <- paste(format, "%z")
as.POSIXct(x, tz, format=format, ...)
}
> as.POSIXct.no.dst(c("2012-03-25 00:00", "2012-03-25 01:00", "2012-03-25 02:00", "2012-03-25 03:00"))
[1] "2012-03-25 00:00:00 CET" "2012-03-25 01:00:00 CET" "2012-03-25 03:00:00 CEST"
[4] "2012-03-25 04:00:00 CEST"
如果你不想夏令时,转换为没有它(例如GMT,UTC)时区。
times <- .POSIXct(times, tz="GMT")
这里越来越夏令时间偏移 - 例如中部夏令时
> Sys.time()
“2015年8月20日7时10分38秒CDT”#我在美国/芝加哥夏令时
> as.POSIXct(as.character(Sys.time()), tz="America/Chicago")
“2015年8月20日7时13分12秒CDT”
> as.POSIXct(as.character(Sys.time()), tz="UTC") - as.POSIXct(as.character(Sys.time()), tz="America/Chicago")
-5个小时的时差
> as.integer(as.POSIXct(as.character(Sys.time()), tz="UTC") - as.POSIXct(as.character(Sys.time()), tz="America/Chicago"))
-5
有些灵感来自
R中转换时区:提示,技巧和陷阱