Hello, I would like to merge two data frames with partially overlapping column names with an rbind-like operation. For the follow data frames, df1 <- data.frame(a=c("A","A"),b=c("B","B")) df2 <- data.frame(b=c("b","b"),c=c("c","c")) I would like the output frame to be (with NAs where the frames don't overlap) a b c A B NA A B NA NA b c NA b c I am familiar with ?merge and ?rbind, but neither seem to offer a means to accomplish this. Thanks in advance. Jonathan [[alternative HTML version deleted]]
Hi: This is a bit of a kluge, but works for your test case:> df2[,setdiff(names(df1),names(df2))] <- NA > df1[,setdiff(names(df2),names(df1))] <- NA > df3 <- rbind(df1,df2) > df3a b c 1 A B <NA> 2 A B <NA> 3 <NA> b c 4 <NA> b c -Ian On 5/15/11 7:41 PM, "Jonathan Flowers" <jonathanmflowers at gmail.com> wrote:>Hello, > >I would like to merge two data frames with partially overlapping column >names with an rbind-like operation. > >For the follow data frames, > >df1 <- data.frame(a=c("A","A"),b=c("B","B")) >df2 <- data.frame(b=c("b","b"),c=c("c","c")) > >I would like the output frame to be (with NAs where the frames don't >overlap) > >a b c >A B NA >A B NA >NA b c >NA b c > >I am familiar with ?merge and ?rbind, but neither seem to offer a means to >accomplish this. > >Thanks in advance. > >Jonathan > > [[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.
> -----Original Message----- > From: r-help-bounces at r-project.org > [mailto:r-help-bounces at r-project.org] On Behalf Of Jonathan Flowers > Sent: Sunday, May 15, 2011 5:41 PM > To: r-help at r-project.org > Subject: [R] rbind with partially overlapping column names > > Hello, > > I would like to merge two data frames with partially > overlapping column > names with an rbind-like operation. > > For the follow data frames, > > df1 <- data.frame(a=c("A","A"),b=c("B","B")) > df2 <- data.frame(b=c("b","b"),c=c("c","c")) > > I would like the output frame to be (with NAs where the frames don't > overlap) > > a b c > A B NA > A B NA > NA b c > NA b c > > I am familiar with ?merge and ?rbind, but neither seem to > offer a means to > accomplish this.What is wrong with merge(all=TRUE,...)? > merge(df1,df2,all=TRUE) b a c 1 B A <NA> 2 B A <NA> 3 b <NA> c 4 b <NA> c Rearrange the columns if that is necessary > merge(df1,df2,all=TRUE)[c("a","b","c")] a b c 1 A B <NA> 2 A B <NA> 3 <NA> b c 4 <NA> b c Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com> > Thanks in advance. > > Jonathan > > [[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. >
Reasonably Related Threads
- Fwd: Re: rbind with partially overlapping column names
- Compare two dataframes
- Dividing rows when time is overlapping
- Best way/practice to create a new data frame from two given ones with last column computed from the two data frames?
- Windows 2000 crash while using rbind (PR#8225)