Итак, у меня есть выходные данные модели распределения воды, которая представляет собой значения притока и расхода воды в реке за каждый час. Я сделал 5 прогонов модели
Воспроизводимый пример:
df <- data.frame(rep(seq(
from=as.POSIXct("2012-1-1 0:00", tz="UTC"),
to=as.POSIXct("2012-1-1 23:00", tz="UTC"),
by="hour"
),5),
as.factor(c(rep(1,24),rep(2,24),rep(3,24), rep(4,24),rep(5,24))),
rep(seq(1,300,length.out=24),5),
rep(seq(1,180, length.out=24),5) )
colnames(df)<-c("time", "run", "inflow", "discharge")
В действительности, конечно, значения для пробегов варьируются. (И у меня действительно много других данных, поскольку у меня есть 100 прогонов и почасовые значения 35 лет).
Итак, сначала я хотел бы рассчитать коэффициент нехватки воды для каждого прогона, что означает, что мне нужно рассчитать что-то вроде (1 - (сброс / приток за 6 часов до)), так как для работы воды требуется 6 часов через водосбор.
scarcityfactor <- 1 - (discharge / lag(inflow,6))
И затем я хочу вычислить среднее, максимальное и минимальное коэффициентов дефицита по всем прогонам (чтобы определить самое высокое, минимальное и среднее значение дефицита, которое может произойти на каждом временном шаге; в соответствии с различными прогонами модели ). Поэтому я бы сказал, что я мог бы просто рассчитать среднее, максимальное и минимальное значения для каждого временного шага:
f1 <- function(x) c(Mean = (mean(x)), Max = (max(x)), Min = (min(x)))
results <- do.call(data.frame, aggregate(scarcityfactor ~ time,
data = df,
FUN = f1))
Кто-нибудь может мне помочь с кодом ??