r - 基于条件 R 的滚动平均值
问题描述
这里简单描述一下我的数据:第一列是按月的日期,第二列是二进制变量(0或1),第三列是股票收益,所以每个月的股票收益指向1或0。我想根据第二列(0 或 1)分别计算 12 个月滚动平均收益。在 12 个月的滚动基数中会有不同数量的 0 和 1。应该有 2 个结果(mean_rolling_0 和 mean_rolling_1)。
解决方案
rollmean()
从 zoo 包中使用,并group_by()
在 dplyr 中应用每个组。
这是一个例子。我猜你的数据结构,但它也适用于类似的结构。
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')
推荐阅读
- python - 对同一数据帧的不同部分的操作
- xslt-1.0 - Xquery transformation on text data in response
- python - 如何从 python Dash 服务器进行串行通信
- cordova - Ionic App 因 iPad 上的空白图标而被拒绝
- webpack - 编译 webpack 和运行本地主机时出现问题
- java - Android如何在android iframe webview中传递url?
- dart - 正则表达式,如何转义字符,特别是星号
- typescript - 如何正确实现重载类的装饰器接口
- flask-admin - 覆盖默认模型视图
- ruby-on-rails - 根据工作日掩码值查找星期几