r - 如何将我的价格 df 转换为基于 100 的回报 df
问题描述
我想从我的数据框中计算返回值并生成一个新的 df,其中我的值基于 100。
例子:
Date Ubam US Corporate
18/02/2014 185.31
19/02/2014 185.17
20/02/2014 185.06
Date Ubam US Corporate
18/02/2014 100
19/02/2014 99.9992 <- 100+(1*((185.17/185.31)-1))
20/02/2014 99.9987
这是我的df
https://www.dropbox.com/transfer/AAAAAFv-jeRgpk4_DpH7R4eCajykisZs0_fuJL8FP08AAUZQxXxou90
有没有自动计算的功能?
谢谢
解决方案
如果df
是您的数据:
df <- data.frame(Date=c('18/02/2014','19/02/2014','20/02/2014'), Ubam = c(185.31, 185.17, 185.06))
您可以首先创建一个价格变化向量,第一个条目为 100:
price_changes <- c(100, tail(df[, 'Ubam'], -1) / head(df[, 'Ubam'], -1) - 1)
然后,您可以进行累积总和以将重新设置的价格索引创建为以下中的新列df
:
df$rebased_index <- cumsum(price_changes)
df
#output
Date Ubam rebased_index
1 18/02/2014 185.31 100.00000
2 19/02/2014 185.17 99.99924
3 20/02/2014 185.06 99.9986
推荐阅读
- angular - 如何在订阅中读取对象(可观察)-angular 6
- swift - 如何从collectionView中的第二项开始?
- omnet++ - 为什么 OMNET++ 无法编译?
- django - Django REST Framework 文件上传不起作用
- javascript - ECMAScript 模板文字返回不同的结果
- sql - 按查询中所需的帮助分组
- python - 在多处理 python 中无法访问全局变量
- ms-access - 通过更改组合框访问 vba 移动到记录
- postgresql - 如何处理 postgresql 中的递归聚合
- apache-storm - 杀死风暴拓扑后的资源清理