这是我的数据的简要说明:第一列是按月的日期,第二列是二进制变量(0或1),第三列是股票收益,因此每个月的股票收益点都为1或0。 我想根据第二列(0或1)分别计算12个月的滚动平均值回报。 12个月的滚动基准中将有不同的0和1。应该有2个结果(mean_rolling_0和mean_rolling_1)。
答案 0 :(得分:1)
使用Zoo软件包中的rollmean()
,并在dplyr中将group_by()
应用于每个组。
这是一个例子。我在猜测您的数据结构,但它也适用于类似的结构。
library(tidyverse)
library(zoo)
# sample data
d = tibble(a = 1:100,
b = sample(c(0,1), 100, replace = T),
c = a/10 + rnorm(100))
# compute rolling mean
d2 = d %>%
group_by(b) %>%
mutate(roll = rollmean(c, 12, na.pad=TRUE, align="right"))
# plot to see the effect
ggplot(data = d2) + geom_line(aes(x = a, y = c, colour = factor(b))) +
geom_line(aes(x = a, y = roll, colour = factor(b)), linetype = 'dashed')