У меня есть DataFrame f
с данными с шагом 10 минут, например:
DateTime id value name
2015-01-01 00:00:00 40497 0 HY
2015-01-01 00:00:00 51395 589 HY
2015-01-01 00:10:00 51395 583 HY
2015-01-01 00:10:00 40497 0 HY
2015-01-01 00:20:00 51395 586 HY
2015-01-01 00:20:00 40497 0 HY
2015-01-01 00:30:00 40497 0 HY
2015-01-01 00:30:00 51395 586 HY
2015-01-01 00:40:00 40497 0 HY
Идентификатор и имя столбца не имеют отношения к тому, что я хочу сделать. Тип DataFrame
выглядит следующим образом:
'data.frame': 9510 obs. of 4 variables:
$ DateTime : POSIXct, format: "2019-10-27 00:00:00" "2019-10-27 00:10:00" "2019-10-27 00:20:00" ...
$ id : int 40497 40497 40497 40497 40497 40497 40497 40497 40497 40497 ...
$ value : int 1445 1444 1433 1431 1430 1431 1427 1411 1411 1410 ...
$ name: chr "HY" "HY" "HY" "HY" ...
Я хочу суммировать столбец значений по часам, данные года 2019, прошлых и будущих лет для меня не важны. На первый взгляд это не так сложно, и на этот вопрос есть много ответов. Можно было бы сделать следующее:
f <- f %>%
mutate(Year = year(DateTime)) %>%
filter(Year == 2019) %>%
mutate(day = floor_date(DateTime, 'day'), h = hour(DateTime)) %>%
group_by(day, h) %>%
mutate(sum_col = sum(value)) %>%
distinct(Year, .keep_all = T) %>%
ungroup()
Проблема заключается в том, что мне нужно учитывать переход на летнее время, а точнее 27/10/2019 02:00:00. В моих данных DataFrame мне нужно иметь две строки для этого значения, одна из которых является обычной, а другая - для перехода на летнее время. Данные уже имеют "двойные значения" для каждой из 10 минут между 02:00 и 03:00 ", и это выглядит так, но, конечно, с несколькими идентификаторами:
DateTime id value name
2019-10-27 02:00:00 40497 1403 HY
2019-10-27 02:10:00 40497 1396 HY
2019-10-27 02:20:00 40497 1395 HY
2019-10-27 02:30:00 40497 1396 HY
2019-10-27 02:40:00 40497 1380 HY
2019-10-27 02:50:00 40497 1374 HY
2019-10-27 02:00:00 40497 1373 HY
2019-10-27 02:10:00 40497 1374 HY
2019-10-27 02:20:00 40497 1373 HY
2019-10-27 02:30:00 40497 1373 HY
2019-10-27 02:40:00 40497 1373 HY
2019-10-27 02:50:00 40497 1373 HY
2019-10-27 03:00:00 40497 1367 HY
Мой вопрос: как мог Я группирую по часам, независимо от имени и идентификатора, и суммирую столбец значений и получаю 2 строки 2019-10-27 02:00:00
, первая для «реальной», а другая для перехода на летнее время.