[R] Fwd: Re: rbind with partially overlapping column names
Peter Ehlers
ehlers at ucalgary.ca
Mon May 16 20:17:42 CEST 2011
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 <ehlers at ucalgary.ca>
To: Jonathan Flowers <jonathanmflowers at 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<iandgow at 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"<wdunlap at tibco.com> wrote:
>>
>>>
>>>> -----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.
>>>>
>>>
>>> ______________________________________________
>>> 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.
>>
>>
>>
>
> [[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.
More information about the R-help
mailing list