我熟悉 R 中的
lag()
函数,但这次我的独特用例是我想使用 rollapplyr()
执行滚动平均值,不包括前七行数据。
如果我以某种方式调整似乎无法完成工作的代码,这可能吗?
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))
您可能可以定义
FUN = \(x) mean(first(x, -7))
来排除 7
紧邻的先例值,例如,
stack %>%
mutate(var1_lag = lag(rollapplyr(var1, 28, \(x) mean(first(x, -7)), partial = TRUE) - 28))