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.