Skip to content
Prev 171057 / 398503 Next

Multiple merge, better solution?

The zoo package has a multi-way merge for zoo objects.   Its
just   do.call(merge, z)   where z is a list of zoo objects.
In detail:

set.seed(1)
DF1 <- data.frame(var1 = letters[1:5], a = rnorm(5), b = rnorm(5), c = rnorm(5))
DF2 <- data.frame(var1 = letters[3:7], a = rnorm(5), b = rnorm(5), c = rnorm(5))
DF3 <- data.frame(var1 = letters[6:10], a = rnorm(5), b = rnorm(5), c
= rnorm(5))
DF4 <- data.frame(var1 = letters[8:12], a = rnorm(5), b = rnorm(5), c
= rnorm(5))

# create list of data frames
DFs <- list(A = DF1, B = DF2, C = DF3, D = DF4)

library(zoo)

# convert to list of zoo objects
z <- lapply(DFs, function(x) zoo(as.matrix(x[ ,-1, drop = FALSE]),
	as.character(x[,1])))

# perform merge
zz <- do.call(merge, z)

# to convert back to data frame
DF <- as.data.frame(var1 = time(zz), coredata(zz))
On Thu, Feb 19, 2009 at 6:00 AM, Lauri Nikkinen <lauri.nikkinen at iki.fi> wrote: