An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20110613/6c1dccb3/attachment.pl>
combine the data frames into comma separated list.
10 messages · Dr. D. P. Kreil (Boku), Gabor Grothendieck, Mary Kindall
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20110613/09b6e3c7/attachment.pl>
Hi, try ?merge Best, David.
On 13 June 2011 23:48, Mary Kindall <mary.kindall at gmail.com> wrote:
Hi R users, I am new to R and am trying to merge data frames in the following way. Suppose I have n data frames each with two fields. Field 1 is common among data frames but may have different entries. Field 2 is different. Data frame 1: Src ? Target1 1 ? ? ? ?aaa 1 ? ? ? ?bbb 1 ? ? ? ?ccc 2 ? ? ? ?aaa 3 ? ? ? ?ddd Data frame 2: Src ? Target2 2 ? ? ? ?aaaa 3 ? ? ? ?dddd 4 ? ? ? ?bbbb 4 ? ? ? ?eeee 4 ? ? ? ?ffff Data frame 3: Src ? Target3 1 ? ? ? ?xx 3 ? ? ? ?yy 5 ? ? ? ?zz 6 ? ? ? ?tt 6 ? ? ? ?uu And so on... I want to convert this into a data frame something similar to: Src ? Target1 ? ? ? ? ? ? ? ? ? target2 target3 1 ? ? ?aaa,bbb,ccc ? ? ? ? ? ?- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? xx 2 ? ? ?aaa ? ? ? ? ? ? ? ? ? ? ? ?aaaa ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - 3 ? ? ?ddd ? ? ? ? ? ? ? ? ? ? ? ?dddd yy 4 ? ? ?- ? ? ? ? ? ? ? ? ? ? ? ? ? ?bbbb,eeee,ffff ? ? ? ? ? ? ? ? ? ? ? ? - 5 ? ? ?- - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?zz 6 ? ? ?- - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tt,uu Basically I am trying to make a consolidated table. Help appreciated. Thanks M ------------- Mary Kindall Yorktown Heights USA ? ? ? ?[[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.
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20110613/64a80717/attachment.pl>
?write.csv Cheers, David.
On 14 June 2011 01:07, Mary Kindall <mary.kindall at gmail.com> wrote:
Thanks for reply.
The following code is working but only patially. How to get the condensed
values separated by comma.
dataframe1 = data.frame(cbind(Src = c(1,1,1,2,3), Target1 =
c('aaa','bbb','ccc','aaa','ddd')));
dataframe2 = data.frame(cbind(Src = c(2,3,4,4,4), Target2 =
c('aaaa','dddd','bbbb','eeee','ffff')));
dataframe3 = data.frame(cbind(Src = c(1,3,5,6,6), Target3 =
c('xx','yy','zz','tt','uu')));
merge(dataframe3, merge(dataframe1,dataframe2, by = 'Src', all=TRUE), by =
'Src', all=TRUE)
1> merge(dataframe3, merge(dataframe1,dataframe2, by = 'Src', all=TRUE), by
= 'Src', all=TRUE)
?? Src Target3 Target1 Target2
1??? 1????? xx???? aaa??? <NA>
2??? 1????? xx???? bbb??? <NA>
3??? 1????? xx???? ccc??? <NA>
4??? 3????? yy???? ddd??? dddd
5??? 5????? zz??? <NA>??? <NA>
6??? 6????? tt??? <NA>??? <NA>
7??? 6????? uu??? <NA>??? <NA>
8??? 2??? <NA>???? aaa??? aaaa
9??? 4??? <NA>??? <NA>??? bbbb
10?? 4??? <NA>??? <NA>??? eeee
11?? 4??? <NA>??? <NA>??? ffff
Thanks
--
M
On Mon, Jun 13, 2011 at 6:35 PM, Dr. D. P. Kreil (Boku)
<David.Kreil at boku.ac.at> wrote:
Hi, try ?merge Best, David. On 13 June 2011 23:48, Mary Kindall <mary.kindall at gmail.com> wrote:
Hi R users, I am new to R and am trying to merge data frames in the following way. Suppose I have n data frames each with two fields. Field 1 is common among data frames but may have different entries. Field 2 is different. Data frame 1: Src ? Target1 1 ? ? ? ?aaa 1 ? ? ? ?bbb 1 ? ? ? ?ccc 2 ? ? ? ?aaa 3 ? ? ? ?ddd Data frame 2: Src ? Target2 2 ? ? ? ?aaaa 3 ? ? ? ?dddd 4 ? ? ? ?bbbb 4 ? ? ? ?eeee 4 ? ? ? ?ffff Data frame 3: Src ? Target3 1 ? ? ? ?xx 3 ? ? ? ?yy 5 ? ? ? ?zz 6 ? ? ? ?tt 6 ? ? ? ?uu And so on... I want to convert this into a data frame something similar to: Src ? Target1 ? ? ? ? ? ? ? ? ? target2 target3 1 ? ? ?aaa,bbb,ccc ? ? ? ? ? ?- ? xx 2 ? ? ?aaa ? ? ? ? ? ? ? ? ? ? ? ?aaaa ? - 3 ? ? ?ddd ? ? ? ? ? ? ? ? ? ? ? ?dddd yy 4 ? ? ?- ? ? ? ? ? ? ? ? ? ? ? ? ? ?bbbb,eeee,ffff ? - 5 ? ? ?- - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?zz 6 ? ? ?- - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tt,uu Basically I am trying to make a consolidated table. Help appreciated. Thanks M ------------- Mary Kindall Yorktown Heights USA ? ? ? ?[[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.
-- ------------- Mary Kindall Yorktown Heights, NY USA
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20110613/ce6974b4/attachment.pl>
Ah, yes, the need to "condense" escaped me. I thought you wanted to
write out the final result separated by commas.
You will need to do the "condensing" separately. Unless someone else
has a more elegant idea, I guess something along the lines of
df2srcs<-unique(dataframe2$Src);
df2new<-data.frame(Src=df2srcs,Target2=sapply(df2srcs,function(s){paste(dataframe2$Target2[dataframe2$Src==s],collapse=',')}));
should do the trick.
Cheers,
David.
On 14 June 2011 01:34, Mary Kindall <mary.kindall at gmail.com> wrote:
How??
I dont think there is any parameter that does this job.
I came up with ddply function in plyr package but having tens of dataframe
and? doing it in a for loop may not be a good idea.
ddply(test, ~ Src , colwise(paste, .(Target1)), collapse ="," );
Can you please write how it can be done by write.csv.
Or is there any efficient method that can do this for me.
dataframe1 = data.frame(cbind(Src = c(1,1,1,2,3), Target1 =
c('aaa','bbb','ccc','aaa','ddd')));
dataframe2 = data.frame(cbind(Src = c(2,3,4,4,4), Target2 =
c('aaaa','dddd','bbbb','eeee','ffff')));
dataframe3 = data.frame(cbind(Src = c(1,3,5,6,6), Target3 =
c('xx','yy','zz','tt','uu')));
test = merge(dataframe3, merge(dataframe1,dataframe2, by = 'Src', all=TRUE,
incomparables=''), by = 'Src', all=TRUE, incomparables='')
ddply(test, ~ Src , colwise(paste, .(Target1)), collapse ="," );
Thanks
On Mon, Jun 13, 2011 at 7:14 PM, Dr. D. P. Kreil (Boku)
<David.Kreil at boku.ac.at> wrote:
?write.csv Cheers, David. On 14 June 2011 01:07, Mary Kindall <mary.kindall at gmail.com> wrote:
Thanks for reply.
The following code is working but only patially. How to get the
condensed
values separated by comma.
dataframe1 = data.frame(cbind(Src = c(1,1,1,2,3), Target1 =
c('aaa','bbb','ccc','aaa','ddd')));
dataframe2 = data.frame(cbind(Src = c(2,3,4,4,4), Target2 =
c('aaaa','dddd','bbbb','eeee','ffff')));
dataframe3 = data.frame(cbind(Src = c(1,3,5,6,6), Target3 =
c('xx','yy','zz','tt','uu')));
merge(dataframe3, merge(dataframe1,dataframe2, by = 'Src', all=TRUE), by
=
'Src', all=TRUE)
1> merge(dataframe3, merge(dataframe1,dataframe2, by = 'Src', all=TRUE),
by
= 'Src', all=TRUE)
?? Src Target3 Target1 Target2
1??? 1????? xx???? aaa??? <NA>
2??? 1????? xx???? bbb??? <NA>
3??? 1????? xx???? ccc??? <NA>
4??? 3????? yy???? ddd??? dddd
5??? 5????? zz??? <NA>??? <NA>
6??? 6????? tt??? <NA>??? <NA>
7??? 6????? uu??? <NA>??? <NA>
8??? 2??? <NA>???? aaa??? aaaa
9??? 4??? <NA>??? <NA>??? bbbb
10?? 4??? <NA>??? <NA>??? eeee
11?? 4??? <NA>??? <NA>??? ffff
Thanks
--
M
On Mon, Jun 13, 2011 at 6:35 PM, Dr. D. P. Kreil (Boku)
<David.Kreil at boku.ac.at> wrote:
Hi, try ?merge Best, David. On 13 June 2011 23:48, Mary Kindall <mary.kindall at gmail.com> wrote:
Hi R users, I am new to R and am trying to merge data frames in the following way. Suppose I have n data frames each with two fields. Field 1 is common among data frames but may have different entries. Field 2 is different. Data frame 1: Src ? Target1 1 ? ? ? ?aaa 1 ? ? ? ?bbb 1 ? ? ? ?ccc 2 ? ? ? ?aaa 3 ? ? ? ?ddd Data frame 2: Src ? Target2 2 ? ? ? ?aaaa 3 ? ? ? ?dddd 4 ? ? ? ?bbbb 4 ? ? ? ?eeee 4 ? ? ? ?ffff Data frame 3: Src ? Target3 1 ? ? ? ?xx 3 ? ? ? ?yy 5 ? ? ? ?zz 6 ? ? ? ?tt 6 ? ? ? ?uu And so on... I want to convert this into a data frame something similar to: Src ? Target1 ? ? ? ? ? ? ? ? ? target2 target3 1 ? ? ?aaa,bbb,ccc ? ? ? ? ? ?- ? xx 2 ? ? ?aaa ? ? ? ? ? ? ? ? ? ? ? ?aaaa ? - 3 ? ? ?ddd ? ? ? ? ? ? ? ? ? ? ? ?dddd yy 4 ? ? ?- ? ? ? ? ? ? ? ? ? ? ? ? ? ?bbbb,eeee,ffff ? - 5 ? ? ?- - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?zz 6 ? ? ?- - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tt,uu Basically I am trying to make a consolidated table. Help appreciated. Thanks M ------------- Mary Kindall Yorktown Heights USA ? ? ? ?[[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.
-- ------------- Mary Kindall Yorktown Heights, NY USA
-- ------------- Mary Kindall Yorktown Heights, NY USA
On Mon, Jun 13, 2011 at 5:17 PM, Mary Kindall <mary.kindall at gmail.com> wrote:
Hi R users, I am new to R and am trying to merge data frames in the following way. Suppose I have n data frames each with two fields. Field 1 is common among data frames but may have different entries. Field 2 is different. Data frame 1: Src ? Target1 1 ? ? ? ?aaa 1 ? ? ? ?bbb 1 ? ? ? ?ccc 2 ? ? ? ?aaa 3 ? ? ? ?ddd Data frame 2: Src ? Target2 2 ? ? ? ?aaaa 3 ? ? ? ?dddd 4 ? ? ? ?bbbb 4 ? ? ? ?eeee 4 ? ? ? ?ffff Data frame 3: Src ? Target3 1 ? ? ? ?xx 3 ? ? ? ?yy 5 ? ? ? ?zz 6 ? ? ? ?tt 6 ? ? ? ?uu And so on... I want to convert this into a data frame something similar to: Src ? Target1 ? ? ? ? ? ? ? ? ? target2 target3 1 ? ? ?aaa,bbb,ccc ? ? ? ? ? ?- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? xx 2 ? ? ?aaa ? ? ? ? ? ? ? ? ? ? ? ?aaaa ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - 3 ? ? ?ddd ? ? ? ? ? ? ? ? ? ? ? ?dddd yy 4 ? ? ?- ? ? ? ? ? ? ? ? ? ? ? ? ? ?bbbb,eeee,ffff ? ? ? ? ? ? ? ? ? ? ? ? - 5 ? ? ?- - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?zz 6 ? ? ?- - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tt,uu
Try this where DF1, DF2 and DF3 are the data frames: L <- list(DF1, DF2, DF3) merge.all <- function(...) merge(..., all = TRUE) Reduce(merge.all, lapply(L, function(x) aggregate(x[2], x[1], toString))) The last line gives this: Src Target1 Target2 Target3 1 1 aaa, bbb, ccc <NA> xx 2 2 aaa aaaa <NA> 3 3 ddd dddd yy 4 4 <NA> bbbb, eeee, ffff <NA> 5 5 <NA> <NA> zz 6 6 <NA> <NA> tt, uu
Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20110613/7a475bb7/attachment.pl>
now that's beautiful! :-) Many thanks, David.
Try this where DF1, DF2 and DF3 are the data frames: L <- list(DF1, DF2, DF3) merge.all <- function(...) merge(..., all = TRUE) Reduce(merge.all, lapply(L, function(x) aggregate(x[2], x[1], toString))) The last line gives this: ?Src ? ? ? Target1 ? ? ? ? ?Target2 Target3 1 ? 1 aaa, bbb, ccc ? ? ? ? ? ? <NA> ? ? ?xx 2 ? 2 ? ? ? ? ? aaa ? ? ? ? ? ? aaaa ? ?<NA> 3 ? 3 ? ? ? ? ? ddd ? ? ? ? ? ? dddd ? ? ?yy 4 ? 4 ? ? ? ? ?<NA> bbbb, eeee, ffff ? ?<NA> 5 ? 5 ? ? ? ? ?<NA> ? ? ? ? ? ? <NA> ? ? ?zz 6 ? 6 ? ? ? ? ?<NA> ? ? ? ? ? ? <NA> ?tt, uu