首页 > 解决方案 > 如何将我的价格 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

有没有自动计算的功能?

谢谢

标签: rpriceperformanceanalytics

解决方案


如果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

推荐阅读