如何在Excel或R中执行滚动和,而不使用for循环

我有一列1000个随机数,我想用Excel或R计算窗口长度为10的滚动和。对于前10个观察值,滚动总和仍然应该用部分窗口长度来计算。 尽pipe我没有在Excel或R中find滚动和function。

我目前在R的尝试是使用循环。 它工作正常,但循环效率低下。 看到我下面的尝试。

vector = as.vector(matrix(1,1000,nrow = 1)) for (i in 1:1000) { if (i<11) { rolling.sum[i]=sum(vector[1:i]) } else { rolling.sum[i] = sum(vector[(i-10):i]) } } 
  • “向量”是需要计算滚动和的随机数的向量。
  • “rolling.window”是我将存储滚动和的variables

我已经想出了一种在R中使用zoo包中的rollapply函数的方法。 使用rollapply(),input值的向量作为第一个参数,窗口的长度作为第二个参数,然后表明它应该是滚动和。 最后一个参数表示它也计算窗口长度不够长时的部分和。 请注意,width参数必须指定窗口是向前看还是向后看。 示例如下:

 vector = as.vector(matrix(1,1000,nrow = 1)) rolling.sum<<-rollapply(vector, width = list(-1:-10), sum, partial=T) 

为了保持标题的精神, 在另一个单元格中自由放置在单元格中select1 (或select不同的起始值),然后在HOME> Editing – Fill,Series …中selectColumns for Series in ,Linear for Type,为Step valueinput1 ,and(“in the cell next to”)停止值:无论您想要的限制/先行值,OK。