如何计算R中Vector中每n个数的总和?

时间:2017-07-29 03:46:08

标签: r

我尝试计算向量中每n个数的总和。我构建了一个计算它的函数,但我确信应该有一些更方便的方法来实现它。

假设它是我的载体:

vector = c(1,5,6,8,10,23,1,10,123,1)

我的功能是计算每n个数的总和:

Sum_N <- function(vector, n ){

  result <- c()

  for(i in seq(1:(length(vector)-n+1))){

    result[i] <- sum(vector[i:(i+n-1)])

   }

 return(result)
}

结果是一个矢量:

### Sum_N(vector,3)
### 12  19  24  41  34  34 134

3 个答案:

答案 0 :(得分:2)

您可以使用TTR包

 TTR::runSum(vector, 3)
[1]  NA  NA  12  19  24  41  34  34 134 134

它将为您提供相同大小的矢量....您可以选择删除NAs

答案 1 :(得分:0)

另一个选项是来自roll_sum

RcppRoll
RcppRoll::roll_sum(vector, 3, fill= NA, align = "right")
#[1]  NA  NA  12  19  24  41  34  34 134 134

答案 2 :(得分:0)

听起来像filter函数的工作(具体是stats::filter):

filter(vector, rep(1,3), sides=1)
#Time Series:
#Start = 1 
#End = 10 
#Frequency = 1 
# [1]  NA  NA  12  19  24  41  34  34 134 13

如果时间序列输出导致问题,只需展平回矢量:

c(filter(vector, rep(1,3), sides=1))
# [1]  NA  NA  12  19  24  41  34  34 134 134