Mam dane szeregów czasowych uzyskane z rejestratora danych, który został ustawiony na jedną strefę czasową bez oszczędności w świetle dziennym (NZST lub UTC + 12: 00), a zakresy danych kilka lat. Dzienniki danych nie uwzględniają zmian czasu letniego i są zsynchronizowane z czasem lokalnym z DST (bez względu na to, kto go wdrożył).Importuj datę i godzinę w określonej strefie czasowej, pomiń czas letni, aby zaoszczędzić czas
Jednak, gdy dostaję dane do R, nie jestem w stanie prawidłowo użyć as.POSIXct
, aby zignorować DST. Używam R 2.14.0 na komputerze z systemem Windows z tymi ustawieniami:
> Sys.timezone()
[1] "NZDT"
> Sys.getlocale("LC_TIME")
[1] "English_New Zealand.1252"
Oto trzy znaczniki czasu po drugiej zmianie wiosna DST, każdy są odstępie 1 godziny od siebie:
> ts_str <- c("28/09/2008 01:00", "28/09/2008 02:00", "28/09/2008 03:00")
> as.POSIXct(ts_str, format="%d/%m/%Y %H:%M", tz="")
[1] "2008-09-28 01:00:00 NZST" NA
[3] "2008-09-28 03:00:00 NZDT"
> as.POSIXct(ts_str, format="%d/%m/%Y %H:%M", tz="UTC")
[1] "2008-09-28 01:00:00 UTC" "2008-09-28 02:00:00 UTC"
[3] "2008-09-28 03:00:00 UTC"
jak można patrz, zegary przeskoczyły do przodu o 1:59 do 3:00, więc 2:00 jest nieważne, czyli NA. Ponadto mogę użyć tz="UTC"
, aby zmusić go do zignorowania zmian DST. Wolę jednak zachować prawidłową strefę czasową, ponieważ mam inną serię danych zarejestrowaną jako z DST (NZDT lub UTC + 13: 00), którą chciałbym dodać (za pośrednictwem merge
) do mojej analizy.
Jak skonfigurować parametr tz
na komputerze z systemem MS Windows? Próbowałem wielu rzeczy, takich jak "NZST", "Nowa Zelandia Standard Time", "UTC + 12: 00", "+1200" itd., Ale bez powodzenia. Czy mogę zmodyfikować inne ustawienie?
Możesz użyć 'tz =" Etc/GMT + 12 "' – James
@ James, dlaczego nie dasz tej odpowiedzi? –
@BenBolker Czy wystarczy dodać odpowiednie ozdoby, aby przekroczyć limit znaków – James