Это еще один способ:
Сделайте еще один вектор, который содержит различные уровни 1: 3, 4: 6, 7: 9
a<-c(1,2,3,4,5,6,7,8,9)
b<-rep(1:3,each=3)
x<-ave(a, b, FUN=mean) #use ave to find the means
x
#[1] 2 2 2 5 5 5 8 8 8 - gives this output
x[seq(1, length(x), 3)] #this will output every 3rd element, giving:
#[1] 2 5 8
и, если вы хотите его на одной строке:
ave(a, rep(1:3,each=3), FUN=mean)[seq(1, length(a), 3)]
и дополнительный способ - использовать некоторую прокатку в виде функции (например, из ZOO пакета или пакета TTR) и выберите 3-й элемент каждый:
library(TTR)
runMean(a,3)[seq(3, length(a), 3)]
#[1] 2 5 8
и, конечно, этот принцип может быть распространен на базовый способ расчета прокатки средние:
filter(a, rep(1/3,3), sides=1)[seq(3, length(a), 3)]
'путем (а, GL (потолке (длина (а)/3), 3, длина (а)), среднее значение)' – Vlo
Вы имеете в виду потолок, но не потолок? – RATWSA
есть. написал код без тестирования в R. sorry – Vlo