[R] Multiple merge, better solution?

baptiste auguie ba208 at exeter.ac.uk
Thu Feb 19 11:41:43 CET 2009


Hi,


I think Reduce could help you.

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

g <- merge(DF1, DF2, by.x="var1", by.y="var1", all=T)
g <- merge(g, DF3, by.x="var1", by.y="var1", all=T)
g <- merge(g, DF4, by.x="var1", by.y="var1", all=T)

test <- Reduce(function(x, y) merge(x, y, all=T,by.x="var1",  
by.y="var1"),
			list(DF1, DF2, DF3, DF4), accumulate=F)

all.equal(test, g) # TRUE


As a warning, it's the first time I've ever used it myself...


Hope this helps,

baptiste



On 19 Feb 2009, at 10:21, Lauri Nikkinen wrote:

> Hello,
>
> My problem is that I would like to merge multiple files with a common
> column but merge accepts only two
> data.frames to merge. In the real situation, I have 26 different
> data.frames with a common column. I can of course use merge many times
> (see below) but what would be more sophisticated solution? For loop?
> Any ideas?
>
> DF1 <- data.frame(var1 = letters[1:5], a = rnorm(5))
> DF2 <- data.frame(var1 = letters[3:7], b = rnorm(5))
> DF3 <- data.frame(var1 = letters[6:10], c = rnorm(5))
> DF4 <- data.frame(var1 = letters[8:12], d = rnorm(5))
>
> g <- merge(DF1, DF2, by.x="var1", by.y="var1", all=T)
> g <- merge(g, DF3, by.x="var1", by.y="var1", all=T)
> merge(g, DF4, by.x="var1", by.y="var1", all=T)
>
> Thanks in advance.
>
> -Lauri
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

_____________________________

Baptiste Auguié

School of Physics
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

Phone: +44 1392 264187

http://newton.ex.ac.uk/research/emag




More information about the R-help mailing list