这就是我的data.table的样子。 A:E列只是为了与excel进行比较。列NewShares
是我想要的列。我不要在我的数据中包含该列。
A B C D E F
dt<-fread('
InitialShares Level Price Amount CashPerShare NewShares
1573.333 0 9.5339 13973.71 0 1573.333
0 1 10.2595 0 .06689 1584.73
0 1 10.1575 0 .06689 1596.33
0 1 9.6855 0 .06689 1608.58')
我正在尝试计算NewShares
,假设通过以90%的价格(InitialShares
)再投资股息(NewShares*CashPershare
)将新股添加到Price*.9
。在excel land中,公式将是=F2+((F2*E3*B3)/(C3*0.9))
,从第二行开始。第一行恰好等于InitialShares
。
在R land,我正在尝试(这不太对劲):
dt[,NewShares:= cumsum(InitialShares[1]*Level * CashPerShare/(Price*.9)+InitialShares[1])]
生成字段后,请注意NewShares
的小数点以验证您的方法。
答案 0 :(得分:2)
如果你扩展你的公式,你会发现这有效:
dt[, NewShares := cumprod(1+Level*CashPerShare/Price/0.9)*InitialShares[1]]