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
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top