je la trame de données suivantes:Les rendements cumulés avec NA de R dans
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
Je voudrais calculer les rendements cumulatifs, mais il y a des valeurs manquantes dans la trame de données. Je:
cumprod(df+1)-1
Obtenir un résultat
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
Le problème ici est que s'il y a une NA, les lignes suivantes vers le bas aura comme résultat NA. Existe-t-il un moyen de calculer les rendements cumulés sans NA affectant le reste des lignes ci-dessous?
Je voudrais obtenir un résultat:
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
Je sais d'une fonction dans le paquet PerformanceAnalytics appelé Return.cumulative, mais cela n'obtenir le rendement cumulatif d'une des colonnes entières.
Des idées?
J'essayais d'utiliser une méthode 'na.omit', mais celle-ci est très bonne. (+1) –
Comment est-ce qu'on porterait ceci au code C? Quelques fondements dans le [code source xts pour runSum traitant des NAs principaux] (https://github.com/R-Finance/xts/search?utf8=%E2%9C%93&q=firstNonNA). Intéressé à écrire runProd dans C. Toute indication @JoshuaUlrich? –