You could also do: library(plyr) res1<-join(dat1,dat2,type="full") res1 # Serialno name year outcome disch_type #1 1 ken 1989 d <NA> #2 2 mary 1989 a <NA> #3 4 john 1989 a <NA> #4 5 tom 1989 a <NA> #5 6 jolly 1989 d <NA> #6 11 mwai 1990 <NA> d #7 21 wanjiku 1990 <NA> a #8 43 maina 1990 <NA> a #9 55 john 1990 <NA> a #10 67 welly 1990 <NA> d
identical(res,res1) #[1] TRUE #or lst1<-list(dat1,dat2) Reduce(function(...) merge(...,by=c("Serialno","name","year"),all=TRUE),lst1) # Serialno name year outcome disch_type #1 1 ken 1989 d <NA> #2 2 mary 1989 a <NA> #3 4 john 1989 a <NA> #4 5 tom 1989 a <NA> #5 6 jolly 1989 d <NA> #6 11 mwai 1990 <NA> d #7 21 wanjiku 1990 <NA> a #8 43 maina 1990 <NA> a #9 55 john 1990 <NA> a #10 67 welly 1990 <NA> d A.K. ----- Original Message ----- From: Rui Barradas <ruipbarra...@sapo.pt> To: Keniajin Wambui <kiang...@gmail.com> Cc: r-help@r-project.org Sent: Thursday, May 23, 2013 8:36 AM Subject: Re: [R] Fwd: Merge Hello, Try the following. rm(list = ls()) dat1 <- read.table(text = " Serialno name year outcome 1 ken 1989 d 2 mary 1989 a 4 john 1989 a 5 tom 1989 a 6 jolly 1989 d ", header = TRUE, stringsAsFactors = FALSE) dat2 <- read.table(text = " Serialno name year disch_type 11 mwai 1990 d 21 wanjiku 1990 a 43 maina 1990 a 55 john 1990 a 67 welly 1990 d ", header = TRUE, stringsAsFactors = FALSE) res <- merge(dat1[, c(1, 4)], dat2[, c(1, 4)], all = TRUE) res <- merge(merge(res, dat1, all.y = TRUE), merge(res, dat2, all.y = TRUE), all = TRUE) res <- res[, c(1, 4, 5, 2, 3)] res Hope this helps, Rui Barradas Em 23-05-2013 09:41, Keniajin Wambui escreveu: > ---------- Forwarded message ---------- > From: Keniajin Wambui <kiang...@gmail.com> > Date: Thu, May 23, 2013 at 11:36 AM > Subject: Merge > To: r-help@r-project.org > > > I am using R 3.01 on R Studio to merge two data sets with approx 120 > variables and the other with 140 variables but with a serialno as the > unique identifier. > i.e > > Serialno name year outcome > 1 ken 1989 d > 2 mary 1989 a > 4 john 1989 a > 5 tom 1989 a > 6 jolly 1989 d > > and > > Serialno name year disch_type > 11 mwai 1990 d > 21 wanjiku 1990 a > 43 maina 1990 a > 55 john 1990 a > 67 welly 1990 d > > How can I merge them to a common data set without having name.x and > name.y or year.x and year.y after merging > -- > Mega Six Solutions > Web Designer and Research Consultant > Kennedy Mwai > 25475211786 > > > -- > Mega Six Solutions > Web Designer and Research Consultant > Kennedy Mwai > 25475211786 > > ______________________________________________ > R-help@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. > ______________________________________________ R-help@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. ______________________________________________ R-help@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.