Hello, Thank you for your help. However the dataframes I gave you were only examples, the actual dataframes are very big. Does this mean I have to write every range of data for each variable??
On Fri, Apr 26, 2013 at 2:25 PM, Rui Barradas <ruipbarra...@sapo.pt> wrote: > Hello, > > The following seems to do the trick. > > > > x1 <- > structure(list(State_prov = c("Nova Scotia", "Nova Scotia", "Nova Scotia" > ), Shape_name = c("Annapolis", "Antigonish", "Gly"), bob2009 = c(0L, > 0L, NA), bob2010 = c(0L, 0L, NA), bob2011 = c(1L, 0L, NA)), .Names = > c("State_prov", > "Shape_name", "bob2009", "bob2010", "bob2011"), class = "data.frame", > row.names = c(NA, > -3L)) > > x2 <- > structure(list(FID = 0:2, State_prov = c("Nova Scotia", "Nova Scotia", > "Nova Scotia"), Shape_name = c("Annapolis", "Antigonish", "Gly" > ), bob2009 = c(0L, 0L, 0L), bob2010 = c(0L, 0L, 0L), coy2009 = c(10L, > 1L, 1L)), .Names = c("FID", "State_prov", "Shape_name", "bob2009", > "bob2010", "coy2009"), class = "data.frame", row.names = c(NA, > -3L)) > > x3 <- merge(x1, x2, all.y = TRUE) > > > > Note also that since by = intersect(names(x1), names(x2)), you really > don't need it, it's the default behavior. > > Hope this helps, > > Rui Barradas > > Em 26-04-2013 18:10, Catarina Ferreira escreveu: > > Dear all, >> >> I'm trying to merge 2 dataframes, but I'm not being entirely successful >> and >> I can't understand why. >> >> Dataframe x1 >> >> State_prov Shape_name bob2009 bob 2010 bob2011 >> Nova Scotia Annapolis 0 0 1 >> Nova Scotia Antigonish 0 0 0 >> Nova Scotia Gly NA NA NA >> >> Dataframe x2 - has 20000 rows and 193 variables, contains one important >> field which is "FID" that is a link to a shapefile (this is not in x1) and >> shares common columns with x1, like this: >> >> FID State_prov Shape_name bob2009 bob 2010 coy 2009 >> 0 Nova Scotia Annapolis 0 >> 0 10 >> 1 Nova Scotia Antigonish 0 >> 0 1 >> 2 Nova Scotia Gly 0 >> 0 1 >> >> So when I do >> >> x3 <- merge(x1, x2, by=intersect(names(x1), names(x2)), all=TRUE) >> >> it should do the trick. The thing is that it works for the columns (it >> adds >> all the new columns not common to both dataframes), but it also adds the >> rows. This is what I get (x3): >> >> FID State_prov Shape_name bob2009 bob 2010 coy 2009 bob2011 >> 0 Nova Scotia Annapolis 0 >> 0 10 NA >> NA Nova Scotia Annapolis NA NA NA >> 1 >> 1 Nova Scotia Antigonish 0 >> 0 1 NA >> NA Nova Scotia Antigonish NA NA NA >> 0 >> 2 Nova Scotia Gly 0 >> 0 1 NA >> NA Nova Scotia Gly NA NA >> NA NA >> >> What I want to get is a true merge, like this: >> >> FID State_prov Shape_name bob2009 bob 2010 coy 2009 bob2011 >> 0 Nova Scotia Annapolis 0 >> 0 10 1 >> 1 Nova Scotia Antigonish 0 >> 0 1 0 >> 2 Nova Scotia Gly 0 >> 0 1 NA >> >> Can anybody please help me to understand what I'm doing wrong. >> Any help will be much appreciated!! >> >> >> -- Catarina C. Ferreira, PhD Post-doctoral Research Fellow Department of Biology Trent University Peterborough, ON Canada URL: http://www.researcherid.com/rid/A-3898-2011 [[alternative HTML version deleted]] ______________________________________________ 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.