I had meant to copy the list on this; must have hit 'Reply'
instead of 'Reply All'.

P Ehlers

-------- Original Message --------
Subject: Re: [R] rbind with partially overlapping column names
Date: Mon, 16 May 2011 11:14:11 -0600
From: Peter Ehlers <ehl...@ucalgary.ca>
To: Jonathan Flowers <jonathanmflow...@gmail.com>

On 2011-05-16 08:56, Jonathan Flowers wrote:
Hi all,

Thanks for your responses.  The merge output works for the test case as Bill
pointed out, but is contingent on non-overlapping values.  Thanks for
pointing this out Ian.  My actual dataset needs to allow for overlapping
values (sorry for the poor test case) so I will cook up something like Ian
and Dennis suggested.

For what it's worth, you could always augment your dataframes
with non-overlapping variables and then William's merge(all=TRUE,...)
will work:

   df1$w <- 1:nrow(df1)
   df2$w <- 1:nrow(df2) + nrow(df1)
   df3 <- merge(df1, df2, all=TRUE)[c("a","b","c")]

Peter Ehlers


Thanks again.

Jonathan

On Mon, May 16, 2011 at 12:28 AM, Ian Gow<iand...@gmail.com>  wrote:

That approach relies on df1 and df2 not having overlapping values in b.
Slight variation in df2 gives different results:

df1<- data.frame(a=c("A","A"),b=c("B","B"))
df2<- data.frame(b=c("B","B"),c=c("c","c"))
merge(df1,df2,all=TRUE)
  b a c
1 B A c
2 B A c
3 B A c
4 B A c


On 5/15/11 11:19 PM, "William Dunlap"<wdun...@tibco.com>  wrote:


-----Original Message-----
From: r-help-boun...@r-project.org
[mailto:r-help-boun...@r-project.org] On Behalf Of Jonathan Flowers
Sent: Sunday, May 15, 2011 5:41 PM
To: r-help@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@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.




        [[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.

______________________________________________
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.

Reply via email to