[英]Rolling mean based on conditions R
這是我的數據的簡要說明:第一列是按月的日期,第二列是二進制變量(0或1),第三列是股票收益,因此每個月的股票收益指向1或0。我想根據第二列(0或1)分別計算12個月的滾動平均值回報。 12個月的滾動基准中將有不同的0和1。 應該有2個結果(mean_rolling_0和mean_rolling_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')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.