Я хочу заполнить дневные профили нагрузки заданным количеством энергии для каждого дня так, чтобы энергия добавлялась к самым низким точкам (впадинам) - фактически повышая минимальные значения.
Скажем, x является упрощенным фреймом данных на 3 дня, каждый день имеет 4 часа и соответствующие значения, и я хочу добавить 4, 5 и 3 единицы к каждому из 3 дней соответственно.
Вот фрейм данных где x $ day указывает день, x $ hour указывает час, x $ daytime указывает метку времени, x $ value указывает значение, а x $ final_value содержит окончательные значения.
x <- data.frame(day = c(1,1,1,1,2,2,2,2,3,3,3,3), hour = c(1,2,3,4,1,2,3,4,1,2,3,4),
daytime = c(1.0,1.25,1.5,1.75,2.0,2.25,2.5,2.75,3.0,3.25,3.5,3.75),
value = c(7,3,6,2, 8,3,3,5, 4,1,9,3), final_value = c(7,4.5,6,4.5, 8,5.333,5.333,5.333, 4,3.5,9,3.5))
Визуально Я заполняю впадины красной кривой до уровня синей кривой.
ggplot2::ggplot(x) +
ggplot2::geom_line(aes(x=daytime,y=value), colour = 'red') +
ggplot2::geom_line(aes(x=daytime,y=final_value), colour = 'blue')
Я ищу эффективный способ сделать это без использования циклов for. Я думал об использовании dplyr :: group_by (день), но несколько идей, которые у меня были, привели к тупикам.
Я был бы очень признателен, если кто-то мог бы помочь.
Заранее спасибо Пол