Estou familiarizado com a lag()
função em R, mas meu caso de uso exclusivo para ela desta vez é que gostaria de executar uma média móvel rollapplyr()
que não inclua as sete linhas de dados imediatamente anteriores.
Isso é possível se eu ajustar de alguma forma o código que parece não funcionar?
library(tidyverse)
library(zoo)
stack <- data.frame(
date = seq(Sys.Date(), Sys.Date() - 99, -1),
var1 = round(rnorm(100, 8000, 500))
)
lag <- stack %>%
mutate(var1_lag = lag(rollapplyr(var1, 28, mean, partial = TRUE) - 28))
rollapply
Pode haverwidth=
uma lista contendo um vetor de deslocamentos onde o deslocamento 0 é a posição atual, o deslocamento -1 é a posição anterior e assim por diante.Abaixo, assumimos que o que se quer é tomar a média dos valores nos 21 deslocamentos que terminam no deslocamento -7. Isso exclui os deslocamentos -6, -5, -4, -3, -2, -1 e 0 (linha atual e 6 linhas anteriores para 7 linhas excluídas no total). Modifique
offsets
se algo diferente foi pretendido.Provavelmente você pode definir
FUN = \(x) mean(head(x, -7))
para excluir os7
valores precedentes imediatos, por exemplo,