不幸的是,我有一个很大的数据集,而VBA却要处理很多问题。因此,我希望R能帮助我。
我有以下数据:
ID month Price
1 1 0,1
1 2 0,2
1 3 0,3
2 1 0,1
2 2 0,2
2 3 0,2
我想添加一个标记为“收益”的第四列,其中显示每月收益。我尝试了一个循环,但不幸的是,它没有产生我想要的结果。
所需结果和收益计算:returnt = Pt / Pt-1 -1
ID month Price return
1 1 0,1
1 2 0,2 1
1 3 0,3 0,5
2 1 0,1
2 2 0,2 1
2 3 0,2 0,5
In VBA my code looks like this:
Dim i as integer
dim j as integer
for i= 1 to 10
j= i + 1
If cells(i,1) = cells (j,1) then
cells(j, 4) = cells(j,3) / cells(i,3) - 1
Else cells(j, 4) = 0
End if
next i
答案 0 :(得分:1)
最后使用注释中的数据创建一个返回函数returnfun
,然后使用Price
将其分别应用于每个ID
的{{1}}向量。不使用任何软件包。
ave
给予:
returnfun <- function(x) c(NA, diff(x) / head(x, -1))
transform(DF, Returns = ave(Price, ID, FUN = returnfun))
或者像这样用动物园定义 ID month Price Returns
1 1 1 0.1 NA
2 1 2 0.2 1.0
3 1 3 0.3 0.5
4 2 1 0.1 NA
5 2 2 0.2 1.0
6 2 3 0.2 0.0
:
returnfun
library(zoo)
returnfun <- function(x) diff(zoo(x), arithmetic = FALSE, na.pad = TRUE) - 1
答案 1 :(得分:0)
R包TTR非常适合财务计算:https://cran.r-project.org/web/packages/TTR/TTR.pdf
以下是ROC(变更率)命令中的代码: 描述计算n个周期内一系列变化的(速率)。 用法 ROC(x,n = 1,type = c(“ continuous”,“ discrete”),na.pad = TRUE)
动量(x,n = 1,na.pad = TRUE)
在您的情况下,只需在您选择的时间段内修改n。