jpm miao
2013-May-07 06:33 UTC
[R] Merge two dataframe with "by", and problems with the common field
Hi, From time to time I merge two dataframes with possibly a common field. Then the common field is no longer present,but what are present fieldname.x and fieldname.y. How can I fix the problem so that I can still call by the orignal fieldname? If you don't understand my problem, please see the example below. Thanks Miao> d1a b c 1 1 4 5 2 2 5 6 3 3 6 7> d2d a f b 1 6 1 8 4 2 7 2 9 5 3 8 3 10 6> d3<-merge(d1, d2, by="b") > d3b a.x c d a.y f 1 4 1 5 6 1 8 2 5 2 6 7 2 9 3 6 3 7 8 3 10> d3["a"]Error in `[.data.frame`(d3, "a") : undefined columns selected> d3["a.x"]a.x 1 1 2 2 3 3 [[alternative HTML version deleted]]
Jim Lemon
2013-May-07 06:58 UTC
[R] Merge two dataframe with "by", and problems with the common field
On 05/07/2013 04:33 PM, jpm miao wrote:> Hi, > > From time to time I merge two dataframes with possibly a common field. > Then the common field is no longer present,but what are present fieldname.x > and fieldname.y. How can I fix the problem so that I can still call by the > orignal fieldname? If you don't understand my problem, please see the > example below. > > Thanks > > Miao > > >> d1 > a b c > 1 1 4 5 > 2 2 5 6 > 3 3 6 7 >> d2 > d a f b > 1 6 1 8 4 > 2 7 2 9 5 > 3 8 3 10 6 >> d3<-merge(d1, d2, by="b") >> d3 > b a.x c d a.y f > 1 4 1 5 6 1 8 > 2 5 2 6 7 2 9 > 3 6 3 7 8 3 10 >> d3["a"] > Error in `[.data.frame`(d3, "a") : undefined columns selected >> d3["a.x"] > a.x > 1 1 > 2 2 > 3 3 >Hi jpm miao, Because you have a column named "a" in both data frames, the merge function adds ".x" and ".y" to the fields with common names. You could change the name of one column, for example, change the name of the "a" column in d2 to "e". You could also drop one of the "a" columns in this case as the two columns are identical. d3<-merge(d1, d2[,c("d","f","b")], by="b") Jim
Rainer Schuermann
2013-May-07 07:01 UTC
[R] Merge two dataframe with "by", and problems with the common field
Not sure whether this really helps you but at least it works for your sample: d3 <- merge( d1, d2, by = c( "a", "b" ) )> d3a b c d f 1 1 4 5 6 8 2 2 5 6 7 9 3 3 6 7 8 10 Rgds, Rainer On Tuesday 07 May 2013 14:33:12 jpm miao wrote:> Hi, > > From time to time I merge two dataframes with possibly a common field. > Then the common field is no longer present,but what are present fieldname.x > and fieldname.y. How can I fix the problem so that I can still call by the > orignal fieldname? If you don't understand my problem, please see the > example below. > > Thanks > > Miao > > > > d1 > a b c > 1 1 4 5 > 2 2 5 6 > 3 3 6 7 > > d2 > d a f b > 1 6 1 8 4 > 2 7 2 9 5 > 3 8 3 10 6 > > d3<-merge(d1, d2, by="b") > > d3 > b a.x c d a.y f > 1 4 1 5 6 1 8 > 2 5 2 6 7 2 9 > 3 6 3 7 8 3 10 > > d3["a"] > Error in `[.data.frame`(d3, "a") : undefined columns selected > > d3["a.x"] > a.x > 1 1 > 2 2 > 3 3 > > [[alternative HTML version deleted]] > > ______________________________________________ > 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.
Jeff Newmiller
2013-May-07 07:09 UTC
[R] Merge two dataframe with "by", and problems with the common field
Either d1$a and d2$a are always the same, or they are not. If they are already the same, you can either omit one of them in the merge: merge(d1, d2[,-2], by="b") or you can use a set of columns for your by: merge(d1,d2, by=c("a","b")) If the "a" columns are distinct, then at least one of them needs a new name in the merged table, and the simplest option is to rename the columns appropriately in d1 and d2 (since they apparently represent different data anyway). --------------------------------------------------------------------------- Jeff Newmiller The ..... ..... Go Live... DCN:<jdnewmil at dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go... Live: OO#.. Dead: OO#.. Playing Research Engineer (Solar/Batteries O.O#. #.O#. with /Software/Embedded Controllers) .OO#. .OO#. rocks...1k --------------------------------------------------------------------------- Sent from my phone. Please excuse my brevity. jpm miao <miaojpm at gmail.com> wrote:>Hi, > > From time to time I merge two dataframes with possibly a common field. >Then the common field is no longer present,but what are present >fieldname.x >and fieldname.y. How can I fix the problem so that I can still call by >the >orignal fieldname? If you don't understand my problem, please see the >example below. > > Thanks > >Miao > > >> d1 > a b c >1 1 4 5 >2 2 5 6 >3 3 6 7 >> d2 > d a f b >1 6 1 8 4 >2 7 2 9 5 >3 8 3 10 6 >> d3<-merge(d1, d2, by="b") >> d3 > b a.x c d a.y f >1 4 1 5 6 1 8 >2 5 2 6 7 2 9 >3 6 3 7 8 3 10 >> d3["a"] >Error in `[.data.frame`(d3, "a") : undefined columns selected >> d3["a.x"] > a.x >1 1 >2 2 >3 3 > > [[alternative HTML version deleted]] > >______________________________________________ >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.