我熟悉lag()
R 中的函数,但这次我的独特用例是执行滚动平均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))
rollapply
可以有width=
一个包含偏移量向量的列表,其中偏移量 0 是当前位置,偏移量 -1 是其之前的位置,依此类推。下面我们假设需要取以偏移量 -7 结尾的 21 个偏移量的值的平均值。这排除了偏移量 -6、-5、-4、-3、-2、-1 和 0(当前行和前 6 行,总共排除了 7 行)。
offsets
如果想要其他内容,请进行修改。也许您可以定义
FUN = \(x) mean(head(x, -7))
排除7
直接的先前值,例如,