У меня есть почасовые данные о значениях CO2, и я хотел бы знать, какова концентрация CO2 в ночное время (например, с 21:00 до 7:00). Воспроизводимый пример:
library(tidyverse); library(lubridate)
times <- seq(ymd_hms("2020-01-01 08:00:00"),
ymd_hms("2020-01-04 08:00:00"), by = "1 hours")
values <- runif(length(times), 1, 15)
df <- tibble(times, values)
Как получить средние ночные значения (например, между 21:00 и 7:00)? Конечно, я могу фильтровать следующим образом:
df <- df %>%
filter(!hour(times) %in% c(8:20))
И затем давать идентификатор каждому наблюдению в течение ночи
df$ID <- rep(LETTERS[1:round(nrow(df)/11)],
times = 1, each = 11)
И, наконец, группировать и суммировать
df_grouped <- df %>%
group_by(., ID) %>%
summarise(value_mean =mean(values))
Но я уверен, что это не лучший способ. Как это лучше сделать? Особенно та часть, где мы даем ID ночным значениям