我有2000个数据点,我想计算所有大小为100天的窗户的标准偏差,但我得到了一些NA值。任何人都可以建议修改。 这是csv的链接: https://drive.google.com/file/d/1NnavFM_FAXIGIyHsNXBbOpoysJYlGnm8/view?usp=sharing
df<- read.csv("BSE_DAX_DCC.csv")
nrow(df)
sd1=c()
for (i in 1:200){
duration = df[(100*(i-1)+1):100*(i),'corr']
sd1[i]=sd(duration)
}
sd1
答案 0 :(得分:0)
这将计算以当前点为中心的100行的平均值(如果可用的行数较少,则减少行数)。您可以添加align=
自变量(请参见?rollapply
),但是如果您向右或向左对齐,那么将只有一行包含一个点,而sd
的一个点是NA。 / p>
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