Prepend XTS irréguliers avec des zéros
Question
Je dois ajouter deux séries chronologiques irrégulières (couvrant jours ouvrables).
J'ai deux séries XTS pour deux produits différents A + B.
Le produit B contient des données à partir d'un démarrage à jour plus tard A.
Je pense que je dois précédez B afin que les dates correspond à A, mais avec tous les zéros.
tel que la somme (A + B) est égale à la somme (A) + somme (B)
Produit A
2009-05-02 4
2010-02-03 4
Produit B
2010-02-03 4
Somme:
A + B
2010-02-03 8
Résultat souhaité
2009-05-02 4
2010-02-03 8
La solution
Comment ce?
library(xts)
Fist nous avons besoin de quelques exemples de données.
proda <- as.xts(matrix(c(4,4), ncol = 1, dimnames = list(c("2009-05-02", "2010-02-03"))))
prodb <- as.xts(matrix(4, ncol = 1, dimnames = list(c("2010-02-03"))))
Sur la base (communes) noms de ligne, merge
reliera les deux ensembles de données créés.
ab <- merge(proda, prodb)
je apply
de valeurs de somme pour chaque rangée (MARGIN = 1
) mais rowSums
fonctionnerait aussi.
data.frame(val = apply(X = ab, MARGIN = 1, FUN = sum, na.rm = TRUE))
Résultat:
val
2009-05-02 4
2010-02-03 8
Autres conseils
Voici une ligne unique (en utilisant les données @ exemple de Roman):
with(merge(proda,prodb,fill=0), proda+prodb)
# proda
# 2009-05-02 4
# 2010-02-03 8
merge.xts
a all=TRUE
par défaut et l'argument fill=
vous permet de spécifier les valeurs à utiliser pour les éléments manquants (valeur par défaut est fill=NA
).
Le résultat de merge(proda,prodb,fill=0)
est un objet avec deux colonnes ( « proda », « prodb ») et une valeur d'index pour chaque valeur d'index dans l'un des objets transmis à merge.xts
.