An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20110515/dc620210/attachment.pl>
rbind with partially overlapping column names
6 messages · Ian Gow, Dennis Murphy, William Dunlap +1 more
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) df3
a 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.
Hi: Another way, with a little less typing but using the same principle, is df1$c <- df2$a <- NA rbind(df1, df2) Dennis
On Sun, May 15, 2011 at 5:50 PM, Ian Gow <iandgow at gmail.com> wrote:
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) df3
a 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.
______________________________________________ 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.
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.
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20110516/51f243a4/attachment.pl>