r - 如何计算索引为 100 的向量中的复合收益?
问题描述
我有以下数据框:
dat <- tibble::tribble( ~date , ~pct_monthly_return,
2021-01-31, 0.0023,
2021-02-28, 0.01,
2021-03-31, 0.035)
我想创建一个名为的新列index
,该列在数据框开始前一个月从 100 开始(即在我的示例中为 2020-12-31)。然后必须将 100 的索引与pct_monthly_return
变量复合,以便我可以看到索引如何随时间增长。
结果应生成以下数据框:
date pct_monthly_return index
2020-12-31 0 100
2021-01-31 0.0023 100.23
2021-02-28 0.01 101.2323
2021-03-31 0.035 104.7754
解决方案
我们可以将收益的累积乘积表示为系数,即1 + pct_monthly_return
dat$index = 100 * cumprod(1+dat$pct_monthly_return)
然后添加您描述的标题行:
rbind(data.frame(date = "2020-12-31", index = 100, pct_monthly_return = 0),
dat)
date index pct_monthly_return
1 2020-12-31 100.0000 0.0000
2 2021-01-31 100.2300 0.0023
3 2021-02-28 101.2323 0.0100
4 2021-03-31 104.7754 0.0350
样本数据
dat <- tibble::tribble( ~date , ~pct_monthly_return,
"2021-01-31", 0.0023,
"2021-02-28", 0.01,
"2021-03-31", 0.035)
推荐阅读
- html - 按钮内的内容是偏移的
- node.js - 通过 AWS Amplify 使用查询 API 获取所有项目
- signal-processing - 如何找到引导超声波束所需的参数?
- anaconda - 由于所需的 python 版本不匹配,无法在 Anaconda 中同时安装 dlib 和 OpenCV
- directx-12 - “资源”和“资源视图”有什么区别?
- java - AutoCompleteSupportFragment 在地点选择后不断禁用它自己
- java - 为什么我得到 - ArrayIndexOutOfBoundsException:5?
- r - 如何根据年份将“埃塞俄比亚”替换为“埃塞俄比亚(-1992)”和“埃塞俄比亚(1993-)”
- lua - 在 LDoc 中创建表?
- android - 使用什么类型的视图?