如何在R中使用lag()函数,而不需要前n行?

问题描述 投票:0回答:1

我熟悉 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))
r rollapply
1个回答
0
投票

您可能可以定义

FUN = \(x) mean(first(x, -7))
来排除
7
紧邻的先例值,例如,

stack %>%
    mutate(var1_lag = lag(rollapplyr(var1, 28, \(x) mean(first(x, -7)), partial = TRUE) - 28))
© www.soinside.com 2019 - 2024. All rights reserved.