R: fusionner deux séries chronologiques irrégulières

J'ai deux séries chronologiques multivariées x et y, à la fois couvrant environ la même gamme dans le temps (on commence deux ans avant les autres, mais elles prennent fin à la même date). Les deux séries ont des observations manquantes dans la forme de colonnes vides à côté de la colonne de date, et aussi dans le sens que l'un de la série a plusieurs dates qui ne se trouvent pas dans l'autre, et vice versa.

Je voudrais créer une trame de données (ou similaire) avec une colonne qui contient toutes les dates trouvé dans x OU y, sans dupliquer les dates. Pour chaque date (ligne), je voudrais horizontalement empiler les observations de x suivant les observations de y, avec NA remplit les cellules manquantes. Exemple:

>x
"1987-01-01"   7.1    NA   3
"1987-01-02"   5.2    5    2
"1987-01-06"   2.3    NA   9

>y
"1987-01-01"   55.3   66   45
"1987-01-03"   77.3   87   34

# result I would like
"1987-01-01"   7.1    NA   3   55.3   66   45
"1987-01-02"   5.2    5    2   NA     NA   NA
"1987-01-03"   NA     NA   NA  77.3   87   34
"1987-01-06"   2.3    NA   9   NA     NA   NA

Ce que j'ai essayé: avec le forfait zoo, j'ai essayé de la fusion.le zoo de la méthode, mais cela semble juste pile les deux séries uns à côté des autres, avec les dates (comme des numéros, par exemple "1987-01-02" montré que 6210) de chaque série apparaissant dans deux colonnes séparées.

Je me suis assis pendant des heures à arriver presque nulle part, de sorte que toute aide est très appréciée.

EDIT: un peu de code ci-dessous conformément à la suggestion de Soumendra

atcoa <- read.csv(file = "ATCOA_full_adj.csv", header = TRUE)
atcob <- read.csv(file = "ATCOB_full_adj.csv", header = TRUE)
atcoa$date <- as.Date(atcoa$date)
atcob$date <- as.Date(atcob$date)
# only number of observations and the observations themselves differ 
>str(atcoa)
'data.frame':   6151 obs. of  8 variables:
$ date        :Class 'Date'  num [1:6151] 6210 6213 6215 6216 6217 ...
$ max         : num  4.31 4.33 4.38 4.18 4.13 4.05 4.08 4.05 4.08 4.1 ...
$ min         : num  4.28 4.31 4.28 4.13 4.05 3.95 3.97 3.95 4 4.02 ...
$ close       : num  4.31 4.33 4.31 4.15 4.1 3.97 4 3.97 4.08 4.02 ...
$ avg         : num  NA NA NA NA NA NA NA NA NA NA ...
$ tot.vol     : int  877733 89724 889437 1927113 3050611 846525 1782774 1497998 2504466 5636999 ...
$ turnover    : num  3762300 388900 3835900 8015900 12468100 ...
$ transactions: int  12 9 24 17 31 26 34 35 37 33 ...
>atcoa[1:1, ]
date a.max a.min a.close a.avg a.tot.vol a.turnover a.transactions
1 1987-01-02  4.31  4.28    4.31    NA    877733    3762300             12
# using timeSeries package
ts.atcoa <- timeSeries::as.timeSeries(atcoa, format = "%Y-%m-%d")
ts.atcob <- timeSeries::as.timeSeries(atcob, format = "%Y-%m-%d")
>str(ts.atcoa)
Time Series:          
Name:               object
Data Matrix:        
Dimension:          6151 7
Column Names:       a.max a.min a.close a.avg a.tot.vol a.turnover a.transactions
Row Names:          1970-01-01 01:43:30  ...  1970-01-01 04:12:35
Positions:          
Start:              1970-01-01 01:43:30
End:                1970-01-01 04:12:35
With:               
Format:             %Y-%m-%d %H:%M:%S
FinCenter:          GMT
Units:              a.max a.min a.close a.avg a.tot.vol a.turnover a.transactions
Title:              Time Series Object
Documentation:      Wed Aug 17 13:00:50 2011
>ts.atcoa[1:1, ]
GMT
a.max a.min a.close a.avg a.tot.vol a.turnover a.transactions
1970-01-01 01:43:30  4.31  4.28    4.31    NA    877733    3762300             12
# The following will create an object of class "data frame" and mode "list", which contains observations for the days mutual for the two series
>ts.atco <- timeSeries::merge(atcoa, atcob)  # produces same result as base::merge, apparently
>ts.atco[1:1, ]
date a.max a.min a.close a.avg a.tot.vol a.turnover a.transactions b.max b.min b.close b.avg b.tot.vol b.turnover b.transactions
1 1989-08-25  7.92  7.77    7.79    NA    269172    2119400             19  7.69  7.56    7.64    NA  81176693  593858000             12

EDIT: problème résolu par (à l'aide de forfait zoo)

atcoa <- read.zoo(read.csv(file = "ATCOA_full_adj.csv", header = TRUE))
atcob <- read.zoo(read.csv(file = "ATCOB_full_adj.csv", header = TRUE))
names(atcoa) <- c("a.max", "a.min", "a.close",
"a.avg", "a.tot.vol", "a.turnover", "a.transactions")
names(atcob) <- c("b.max", "b.min", "b.close",
"b.avg", "b.tot.vol", "b.turnover", "b.transactions")
atco <- merge.zoo(atcoa, atcob)

Merci à vous tous pour votre aide.

source d'informationauteur Benjamin Allévius