Это вычисляет среднее из 100 строк, центрированных вокруг текущей точки (или меньше строк, если доступно меньше строк). Вы можете добавить аргумент align=
(см. ?rollapply
), но если вы выровняете вправо или влево, тогда будет одна строка, имеющая только одну точку, а sd
из одной точки - NA.
library(zoo)
transform(df, mean = rollapply(corr, 100, sd, partial = TRUE))
Для наглядности используем меньший пример:
rollapply(1:5, 3, sd, partial = TRUE)
## [1] 0.7071068 1.0000000 1.0000000 1.0000000 0.7071068
# same
c(sd(1:2), sd(1:3), sd(2:4), sd(3:5), sd(4:5))
## [1] 0.7071068 1.0000000 1.0000000 1.0000000 0.7071068