2015-12-02 64 views
0

我知道如何利用滞后的区别:功能的滞后资金

delX = diff(x) 

但我知道只有这样才能采取滞后总和:

sumY = apply(embed(c(0,y),2),1, sum) 

是否有可以采取的函数滞后的总和?这种方式(或以其他方式滑动索引)不是很直观。

+0

我想,一个例子会很有帮助。 “滞后总和”的含义对我来说并不明显。也许你只是想'嵌入'的东西'rowSums? – Frank

+0

以下所有答案都很好,谢谢! –

回答

3

您正在寻找filter

x <- 1:10 
filter(x, filter=c(1,1), sides=1) 
# [1] NA 3 5 7 9 11 13 15 17 19 

你也可以使用headtail

head(x, -1) + tail(x, -1) 
# [1] 3 5 7 9 11 13 15 17 19 
+0

'head'和'tail'函数看起来是最直观的。谢谢。 –

0

两个更多的选择:

x <- 1:10 
x + dplyr::lag(x) 
# [1] NA 3 5 7 9 11 13 15 17 19 
x + data.table::shift(x) 
# [1] NA 3 5 7 9 11 13 15 17 19 

注意,你可以很容易地改变两个函数中的滞后数。您也可以使用dplyr::lead()data.table::shift(x, 1L, type = "lead")创建主导向量,而不是滞后。这两个函数还允许您指定默认值(默认值为NA)。