найдите наибольшее изменение значения за каждые 6 часов в r

#r #dataframe #rollapply

#r #dataframe #rollapply

Вопрос:

У меня есть фрейм данных с первым столбцом из 2 столбцов: дата-час (каждый час одно наблюдение), а второй столбец — температура (th).Я пытаюсь найти, какое наибольшее изменение температуры в моем ряду данных за определенное время (6 часов)? Учитывайте как быстрое повышение, так и понижение температуры. Я реализую функцию для вычисления диапазона между max(x) и min(x) вектора x. а затем используйте эту функцию в аргументе FUN = функции rollapply (из пакета zoo).

 t_range<- function(x)diff(range(x))
th<-Th %>%  mutate(t06 = rollapply(th, 
                               width = 6, 
                               FUN = t_range, 
                               fill = NA, 
                               align= "right",
                               arrange = desc(th)))
 

Но я столкнулся со следующей ошибкой:
неиспользуемый аргумент (arrange = c(…..

в чем проблема arrange= .. здесь?

Комментарии:

1. Удалить arrange = desc(th) . th <- Th %>% mutate(t06 = rollapply(th, width = 6, FUN = t_range, fill = NA, align= "right")) . Вы также можете использовать rollapplyr , который имеет значение по умолчанию align= "right"

2. Спасибо. да, теперь я понимаю всю концепцию

Ответ №1:

Вы можете удалить arrange = desc(th) из rollapply вызова. Включите его до или после rollapply . Также rollapply(..., align = 'right') можно упростить с rollapplyr помощью .

 library(dplyr)

th<- Th %>%  
      mutate(t06 = zoo::rollapplyr(th,width = 6, FUN = t_range, fill = NA)) %>%
      arrange(desc(th))