You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中计算以100为基值的月度复利收益指数列

解决方案

实现代码(tidyverse风格)

依赖tidyverse和lubridate两个常用包,代码如下:

library(tidyverse)
library(lubridate)

# 原始数据
dat <- tibble::tribble(    ~date     ,  ~pct_monthly_return,
                           2021-01-31,   0.0023,
                           2021-02-28,   0.01,
                           2021-03-31,   0.035)

# 生成目标数据框
result <- dat %>%
  # 插入基期行:在数据集最前面添加基准时间行
  add_row(
    date = min(.$date) %m-% months(1),
    pct_monthly_return = 0,
    .before = 1
  ) %>%
  # 复利计算指数值,需要保留几位小数可自行加round()调整
  mutate(
    index = 100 * cumprod(1 + pct_monthly_return)
  )

逻辑说明

  • %m-%是lubridate提供的安全月份减法,可避免月底日期跨月计算出现无效日期的问题
  • 插入基期行后用cumprod计算累计乘积,刚好匹配复利计息规则:每一期指数=上期指数*(1+当期收益率),基期收益率为0刚好对应初始值100

内容的提问来源于stack exchange,提问作者Bandit King

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:09:02