0

我的数据集如下所示:

set.seed(1234)
mydata <- data.frame("Returns" = sample(1:20,200, replace=T), "Vol" = 0)

我计算了新列中前 21 行的年化每日波动率:

d_vol <- sd(mydata$Returns[1:21]) 
y_vol <- d_vol*sqrt(252)

上述计算将第 21 行 vol 列中的值替换为 83.38345

我想学习的是:

如何使用 (y_vol) 中使用的公式滚动或自动填充剩余的 (22:200) 行。

谢谢,

4

1 回答 1

0

仅使用基数 r:

mydata$Vol[21:200] <- mapply(function(x, y) sd(mydata$Returns[x:y])*sqrt(252), 1:180, 21:200)

另外,仅供参考,

mydata <- data.frame(Returns = sample(1:20,200, replace=T), Vol = NA)

工作得很好。不需要在列名周围加上引号。此外,您应该使用 NA 而不是 0 作为Vol.

于 2019-11-15T05:42:55.890 回答