2015-10-10 1 views
1

Я хочу рассчитать меру из трех последовательных переменных enter image description here вектор.Применить функцию по последовательным группам в векторе

Ex: Vec < -rep (1:10)

Я хотел бы выход быть как на скриншоте ниже:

+0

Как вы получили в среднем 1,5 за 1: 3 значения – akrun

+0

Я понятия не имею, , Я, должно быть, сделал что-то не так в excel. Я хочу средства 1: 3, 4: 7, 8:10 ... – mad

+0

Похоже, вы хотите 'zoo :: rollmean (1:15, 2)' –

ответ

1

Вы можете создать следующую функцию для расчета средств по группам 3 (или любое другое количество):

f <- function(x, k=3) 
    { 
     for(i in seq(k,length(x),k)) 
     x[(i/k)] <- mean(x[(i-k+1):i]) 
     return(x[1:(length(x)/k)]) 
    } 

е (1:15) [1] 2 5 8 11 14

1

Мы можем создать группировку переменной с помощью gl, а затем получить mean с ave

ave(Vec, as.numeric(gl(length(Vec), 3, length(Vec)))) 
+0

Можно ли сделать так, чтобы длина была равна 5 вместо 15? Например: 2, 5, 8, 11, 14? – mad

+0

@mad 'Vec <- 1: 10' Если вы хотите получить среднее значение из 5 последовательных значений, измените' gl' на 'gl (длина (Vec), 5, length (Vec))' – akrun