Я привел временные ряды в R, используя функцию parse_date_time в библиотеке (lubridate), и я привел ее как EST.Преобразование часовых поясов в пределах временных рядов
streamflowDateTime<-parse_date_time(streamflowDateTime,"%m%d%Y %H%M",tz="EST")
Однако данные имеют опыт работы с DST 04-03-2005 01:45, а следующий шаг - 03:00. Я хочу преобразовать это событие и все отметки времени, которые следуют за EST, вычитая час, чтобы он был непрерывным. Было бы предпочтительнее, если бы был автоматический способ сделать это, когда программа выясняет, где начинается DST, и возвращается назад на час, так как DST не вступает в силу каждый год в тот же день в одно и то же время.
Вот пример данных
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' на нем), пожалуйста? – nrussell
Это набор данных длиной 35034 элементов. Я не знаю, как я мог бы опубликовать это здесь. – Saadat
Кроме того, я прочитал решение, которое вы опубликовали ранее. Он не работает, потому что он преобразует весь набор данных в EST. В принципе, я решил, что это поможет, если я приведу данные в виде EDT, а затем найду место, где начинается DST, и преобразует все данные с этого момента в EST! – Saadat