Это, на мой взгляд, таблица data.table. Последний столбец NewShares - это мои искомые столбцы.R Накопительная сумма, основанная на двух переменных
library(data.table)
dt <- fread('
Client Level NumShares Interest NewShares
A 0 10 0 10
A 0 0 0 10
A 1 0 .1 11
A 0 9 0 20
A 1 0 .2 24')
Я хочу, чтобы накопительные NumShares учитывались при покупке NewShares с процентами. Таким образом, по состоянию на 1-й строкой совокупные акции равны 10. По состоянию на 3-й ряд, Level==1
, поэтому я должен добавить проценты. Это будет 10+(10*.1)=11
. По состоянию на 4-й строке совокупные акции составляют 11+9 =20
. В последней строке, Level==1
, поэтому новые акции 20+(20*.2) = 24
Я пробовал:
dt[,NewShares:= NumShares* cumprod(1+ NumShares*Interest),by=Client]
Авось 'DT [, NewSharesN: = потолок (cumsum (cumsum (NumShares) * Interest + NumShares)), Client] ' – akrun