Я смотрю на последствия засухи на растениях и для этого мне нужно будет сравнить данные до, во время и после засухи. Однако оказалось, что трудно выбрать эти периоды из моих данных, так как длина дней варьируется. Поскольку у меня есть временные ряды по несколько лет с ежедневным разрешением, я бы не хотел выбирать периоды вручную. Я боролся с этим в течение достаточно долгого времени и был бы очень признателен за любые советы и рекомендации.
Вот упрощенный пример моих данных:
myData <- tibble(
day = c(1:16),
TWD = c(0,0,0,0.444,0.234,0.653,0,0,0.789,0.734,0.543,0.843,0,0,0,0),
Amp = c(0.6644333,0.4990167,0.3846500,0.5285000,0.4525833,0.4143667,0.3193333,0.5690167,0.2614667,0.2646333,0.7775167,3.5411667,0.4515333,2.3781333,2.4140667,2.6979333)
)
В моих данных, TWD> 0 означает, что есть засуха, поэтому я идентифицировал эти периоды.
myData %>%
mutate(status = case_when(TWD > 0 ~ "drought",
TWD == 0 ~ "normal")) %>%
{. ->> myData}
Я использовал следующий код, чтобы получить длину отдельных нормальных периодов и периодов засухи
myData$group <- with(myData, rep(seq_along(z<-rle(myData$status)$lengths),z))
with(myData, table(group, status))
status
group drought normal
1 0 3
2 3 0
3 0 2
4 4 0
5 0 4
Вот где я застрять. В идеале я хотел бы иметь средства Amp для каждого периода засухи и сравнить их со средним значением нормального периода до и после засухи, а затем перейти к следующему периоду засухи. Как я могу сравнить дни, например, групп 1, 2 и 3? Я нашел многообещающее решение здесь Выбор определенного c диапазона дней до события в R , где использовался map(. , function(x) dat[(x-5):(x), ])
, но проблема в том, что у меня нет фиксированного количества дней, которые я хочу сравнивать, так как количество дней зависит от продолжительности нормальных периодов и периодов засухи.
Я думал о создании вложенного тибла для сравнения различных групп, как здесь Сравнение групп друг с другом с
tibble(value = myData,
group= myData$group %>%
nest(value))
, но это создает ошибку, которую я считаю потому что я пытаюсь объединить вектор, а не тибл.