Я пишу функцию, чтобы проверить, соответствует ли высота растений монотонному c росту. Поскольку в данных есть NA, которая не делает недействительным прямое предположение, я бы хотел, чтобы они были заполнены сверху вниз, а если первое значение в серии - NA, это должно быть заполнено снизу вверх. Как мне указать, что я хотел бы, чтобы ряды без записанных высот были оставлены в NA?
У меня есть кадр данных, который выглядит следующим образом:
plantid <- rep(c(1,2,3,4,5), times=c(3,3,3,3,3))
year <- rep(1:3, length.out=length(plantid))
height <- c(1,2,3,1,NA,3,3,2,1,NA,2,3,1,3,2)
plant.df <- data.frame(plantid,year,height)
Однако, когда спрашивается, есть ли Нарушая (уменьшая) тенденцию роста особи растения, мой dplyr отвечает TRUE
за все.
plant.df %>% group_by(plantid, year) %>%
arrange(plantid, year) %>%
tidyr::fill(height, direction="downup") %>%
mutate(monotonic_growth = all(height==cummax(height)))
Ожидаемый результат:
monotonic_growth<- c(rep(TRUE, 3), rep(TRUE, 3), rep(FALSE, 3), rep(TRUE,3), rep(FALSE,3))
cbind(plant.df,monotonic_growth)
Есть ли способ избежать все (), так что я могу отсортировать более подробно позже? т.е. ожидаемый результат:
monotonic_growth <- c(1,1,1,1,1,1,1,0,0,1,1,1,1,0,0)
cbind(plant.df,monotonic_growth)
Большое спасибо !!