Один из способов справиться с этим - создать столбец для определения количества осадков, а затем суммировать на основе этого столбца.
решение по тидиверсу:
library(dplyr)
library(tidyr)
my.data <- AcademyPH %>%
gather(key = "Model", value = "Rainfall", 2:17) %>%
group_by(Model) %>%
mutate(Event = cumsum((Rainfall>0&lag(Rainfall, default = 0)==0)|(Rainfall==0&lag(Rainfall, default = 0)>0))) %>%
group_by(Model,Event) %>%
summarize(
Duration = n(),
EventRainfal = sum(Rainfall),
MaxRain = max(Rainfall)
) %>%
ungroup()
head(my.data, 10) # more rows so you can see differences between Event rainfall and max rainfall
# A tibble: 10 x 5
# Groups: Model [5]
# Model Event Duration EventRainfal MaxRain
# <chr> <int> <int> <dbl> <dbl>
# 1 X1_1 1 1 2.80 2.80
# 2 X1_1 2 5 0 0
# 3 X10 0 6 0 0
# 4 X11 0 4 0 0
# 5 X11 1 1 0.261 0.261
# 6 X11 2 1 0 0
# 7 X12 0 2 0 0
# 8 X12 1 2 2.77 1.95
# 9 X12 2 2 0 0
#10 X13 1 3 3.87 1.62
В результирующей таблице каждый из ваших исходных столбцов представлен в разделе Модель со значением в поле Событие для каждого периода дождя против сухого, как долго это событиепродолжалось, и сколько выпало дождя.Затем вы можете отфильтровать это, чтобы оно содержало только события дождя (в отличие от сухих заклинаний).Чтобы поместить это в серию отдельных столбцов, вы можете использовать spread()
, чтобы распределить их по столбцам с названием модели.Я думаю, что в этом случае вам нужны отдельные таблицы для продолжительности события и количества осадков