我正在处理众所周知的夏令时问题,这可能是一个重复。我可以找到this这对我的问题没有多大帮助。我的另一个问题是,我在时间步"2015-10-25 02:00:00"
的第二次出现时有数据缺口。这似乎是问题,导致在"2015-10-25 03:00:00"
将有关重新启动R会话的示例数据发送给我,这会产生不同的结果......
新会议上的测试数据:
Sys.setenv(TZ="Europe/Berlin")
ts1 <- c(seq(as.POSIXct("2015-10-25 02:00:00", tz="Europe/Berlin"), by = 600, length.out = 12 ))
ts2 <- c(seq(as.POSIXct("2015-10-25 01:40:00", tz="Europe/Berlin"), by = 1200, length.out = 9 ))
ts3 <- ts2[c(1,2,3,4,6,7,8,9)]
正在给予:
> ts1
[1] "2015-10-25 02:00:00 CET" "2015-10-25 02:10:00 CET" "2015-10-25 02:20:00 CET"
[4] "2015-10-25 02:30:00 CET" "2015-10-25 02:40:00 CET" "2015-10-25 02:50:00 CET"
[7] "2015-10-25 03:00:00 CET" "2015-10-25 03:10:00 CET" "2015-10-25 03:20:00 CET"
[10] "2015-10-25 03:30:00 CET" "2015-10-25 03:40:00 CET" "2015-10-25 03:50:00 CET"
> ts2
[1] "2015-10-25 01:40:00 CEST" "2015-10-25 02:00:00 CEST" "2015-10-25 02:20:00 CEST"
[4] "2015-10-25 02:40:00 CEST" "2015-10-25 02:00:00 CET" "2015-10-25 02:20:00 CET"
[7] "2015-10-25 02:40:00 CET" "2015-10-25 03:00:00 CET" "2015-10-25 03:20:00 CET"
> ts3
[1] "2015-10-25 01:40:00 CEST" "2015-10-25 02:00:00 CEST" "2015-10-25 02:20:00 CEST"
[4] "2015-10-25 02:40:00 CEST" "2015-10-25 02:20:00 CET" "2015-10-25 02:40:00 CET"
[7] "2015-10-25 03:00:00 CET" "2015-10-25 03:20:00 CET"
再次运行之后
ts1 <- c(seq(as.POSIXct("2015-10-25 02:00:00", tz="Europe/Berlin"), by = 600, length.out = 12 ))
获得
> ts1
[1] "2015-10-25 02:00:00 CEST" "2015-10-25 02:10:00 CEST" "2015-10-25 02:20:00 CEST"
[4] "2015-10-25 02:30:00 CEST" "2015-10-25 02:40:00 CEST" "2015-10-25 02:50:00 CEST"
[7] "2015-10-25 02:00:00 CET" "2015-10-25 02:10:00 CET" "2015-10-25 02:20:00 CET"
[10] "2015-10-25 02:30:00 CET" "2015-10-25 02:40:00 CET" "2015-10-25 02:50:00 CET"
最后,这个
ts4 = c(as.POSIXct("2015-10-25 01:40:00", tz="Europe/Berlin"),
as.POSIXct("2015-10-25 02:00:00", tz="Europe/Berlin"),
as.POSIXct("2015-10-25 02:20:00", tz="Europe/Berlin"),
as.POSIXct("2015-10-25 02:40:00", tz="Europe/Berlin"),
as.POSIXct("2015-10-25 02:00:00", tz="Europe/Berlin"),
as.POSIXct("2015-10-25 02:20:00", tz="Europe/Berlin"),
as.POSIXct("2015-10-25 02:40:00", tz="Europe/Berlin"),
as.POSIXct("2015-10-25 03:00:00", tz="Europe/Berlin"),
as.POSIXct("2015-10-25 03:20:00", tz="Europe/Berlin"))
导致
> ts4
[1] "2015-10-25 01:40:00 CEST" "2015-10-25 02:00:00 CEST" "2015-10-25 02:20:00 CEST"
[4] "2015-10-25 02:40:00 CEST" "2015-10-25 02:00:00 CEST" "2015-10-25 02:20:00 CEST"
[7] "2015-10-25 02:40:00 CEST" "2015-10-25 03:00:00 CET" "2015-10-25 03:20:00 CET"
如您所见,第二轮ts1
正在提供正确的DST。这使得重现性变得一团糟。实际上只是ts4
有点复制我的问题。但是在我的真实数据中,我在"2015-10-25 02:00:00"
的第二个数据可能不是问题...我希望这是众所周知的,并且有人有解决方案。我很感激基础R解决方案。
编辑:
所以这似乎是问题的核心:
Restarting R session...
> as.POSIXct("2015-10-25 02:00:00", tz="Europe/Berlin")
[1] "2015-10-25 02:00:00 CET"
> as.POSIXct("2015-10-25 01:40:00", tz="Europe/Berlin")
[1] "2015-10-25 01:40:00 CEST"
> as.POSIXct("2015-10-25 02:00:00", tz="Europe/Berlin")
[1] "2015-10-25 02:00:00 CEST"
> rm(list = ls())
> as.POSIXct("2015-10-25 02:00:00", tz="Europe/Berlin")
[1] "2015-10-25 02:00:00 CEST"
> as.POSIXct("2015-10-25 03:00:00", tz="Europe/Berlin")
[1] "2015-10-25 03:00:00 CET"
> as.POSIXct("2015-10-25 02:00:00", tz="Europe/Berlin")
[1] "2015-10-25 02:00:00 CET"
as.POSIXct
背后的例程是什么?我在哪里可以找到它?