Я ввел временной ряд в R, используя функцию parse_date_time в библиотеке (lubridate), и я ввел его как EST.
streamflowDateTime<-parse_date_time(streamflowDateTime,"%m%d%Y %H%M",tz="EST")
Однако данные переходят на летнее время 03.04.2005 в 01:45, а следующий временной шаг — 03:00. Я хочу преобразовать это событие и все последующие метки времени в EST, вычитая час, чтобы оно было непрерывным. Было бы предпочтительнее, если бы был автоматизированный способ сделать это, когда программа определяет, где начинается переход на летнее время, и сама перемещается на час назад, поскольку летнее время не вступает в силу каждый год в один и тот же день в одно и то же время.
Вот пример данных
structure(c(1112475600, 1112476500, 1112477400, 1112478300, 1112479200,
1112480100, 1112481000, 1112481900, 1112482800, 1112483700, 1112484600,
1112485500, 1112486400, 1112487300, 1112488200, 1112489100, 1112490000,
1112490900, 1112491800, 1112492700, 1112493600, 1112494500, 1112495400,
1112496300, 1112497200, 1112498100, 1112499000, 1112499900, 1112500800,
1112501700, 1112502600, 1112503500, 1112504400, 1112505300, 1112506200,
1112507100, 1112508000, 1112508900, 1112509800, 1112510700, 1112515200,
1112516100, 1112517000, 1112517900, 1112518800, 1112519700, 1112520600,
1112521500, 1112522400, 1112523300, 1112524200, 1112525100, 1112526000,
1112526900, 1112527800, 1112528700, 1112529600, 1112530500, 1112531400,
1112532300, 1112533200, 1112534100, 1112535000, 1112535900, 1112536800,
1112537700, 1112538600, 1112539500, 1112540400, 1112541300, 1112542200,
1112543100, 1112544000, 1112544900, 1112545800, 1112546700, 1112547600,
1112548500, 1112549400, 1112550300, 1112551200, 1112552100, 1112553000,
1112553900, 1112554800, 1112555700, 1112556600, 1112557500, 1112558400,
1112559300, 1112560200, 1112561100, 1112562000, 1112562900, 1112563800,
1112564700, 1112565600, 1112566500, 1112567400, 1112568300, 1112569200
), class = c("POSIXct", "POSIXt"), tzone = "EST")
Редактирует:
streamflowDateTime[8840:length(streamflowDateTime)] <- streamflowDateTime[8840:length(streamflowDateTime)]-hours(1)
В полном наборе данных событие происходит в месте 8840, которое я знаю вручную, я хочу, чтобы код автоматически находил положение, в котором разница во времени между двумя последовательными отметками времени не составляет 15 минут, и заменял «8840» в коде на это автоматизированное значение. циклы слишком медленные
streamflowDateTime
(до вызоваparse_Date_time
), пожалуйста? - person nrussell   schedule 05.02.2015