簡體   English   中英

基於條件R的滾動平均值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM