次のデータフレームがあります。
df <- data.frame(Return1=c(NA, NA, .03, .04, .05),
Return2=c(.25, .33, NA, .045, .90),
Return3=c(.04, .073, .08, .04, .01))
Return1 Return2 Return3
1 NA 0.250 0.040
2 NA 0.330 0.073
3 0.03 NA 0.080
4 0.04 0.045 0.040
5 0.05 0.900 0.010
累積リターンを計算したいのですが、データフレームに欠損値があります。私が使用した:
cumprod(df+1)-1
結果として得ること
Return1 Return2 Return3
1 NA 0.2500 0.0400000
2 NA 0.6625 0.1159200
3 NA NA 0.2051936
4 NA NA 0.2534013
5 NA NA 0.2659354
ここでの問題は、NA がある場合、後続の行が結果として NA になることです。NAが下の残りの行に影響を与えずに累積リターンを計算する方法はありますか?
結果として取得したい:
Return1 Return2 Return3
1 NA 0.2500 0.0400000
2 NA 0.6625 0.1159200
3 0.03 NA 0.2051936
4 0.07120 0.7373 0.2534013
5 0.12476 2.3008 0.2659354
Return.cumulative と呼ばれる PerformanceAnalytics パッケージの関数を知っていますが、これは列全体の累積リターンのみを取得します。
何か案は?