Skip to contents

Calculate moving sum of n values "around" values

Usage

movingSum(x, n, na.rm = FALSE)

Arguments

x

vector of values of which moving sum is to be calculated

n

number of values "around" the values in x, including the values in x, of which the mean is calculated. Only odd numbers 1, 3, 5, ... allowed. For each x[i] in x the moving sum is calculated by: x[i-(n-1)/2] + ... + x[i-1] + x[i] + x[i+1] + ... + x[i+(n-1)/2]

na.rm

logical. Should missing values (including NaN) be omitted from the calculations?

Value

Vector of moving sums with the same number of values as there are in

x. If na.rm is FALSE, the first (n-1)/2 values and the last (n-1)/2 values are NA since there are not enough values at the start and at the end of the vector, respectively, to calculate the sum.

Examples

x <- rnorm(30)

plot(x, type = "b", main = "Moving mean over 3, 5, 7 points")

times <- 2:4

for (i in times) {

  lines(movingSum(x, n = 2 * i - 1), col = i, type = "b", lwd =  2)
}

legend("topright", fill = times, legend = sprintf("n = %d", 2 * times - 1))