首页 文章

如何计算R中任意滞后数滞后的乘积(dplyr)

提问于
浏览
0

这可能是一个非常基本的问题,但我似乎并没有让它正常工作 . 我需要在时间序列数据的R data.frame中计算元素的简单乘积和一定数量的滞后 . 我试图在 dplyr 管道中实现这一点 . 例如 . :

require(dplyr)

df <- data.frame(YEAR = c(2010, 2011, 2012, 2013, 2014),
                 x = c(1, 2, 3, 4, 5))

dfFinal <- df %>% mutate(prodLag1 = prod(x, lag(x, 1), na.rm = T),
                         prodLag2 = prod(x, lag(x, 1), lag(x, 2), na.rm = T),
                         prodLag3 = prod(x, lag(x, 1), lag(x, 2), lag(x, 3), na.rm = T))

结果不是我想的 . 例如 . 使用prodLag1,结果数据框应如下所示:

dfFinal <- data.frame(YEAR = c(2010, 2011, 2012, 2013, 2014),
                      x = c(1, 2, 3, 4, 5),
                      prodLag1 = c(NA, 2, 6, 12, 20))

另外,我的目标是滞后= 10,我想找到比单独输入每个滞后更可行的方法. Reduce 会为此工作吗?

1 回答

  • 1

    做prodLag10的一种方法......

    dfFinal <- df %>% mutate(cumlog = cumsum(log(x)),
                             prodLag10 = exp(cumlog-lag(cumlog,11)))
    

相关问题