tgodoy <tingola_07@hotmail.com> wrote on 08/03/2012 12:00:24 PM:
> 
> Hi, I'm a new user or R and I try to concatenate a several rows 
according
> with the value in a column. 
> 
> this is my data.frame and I want to concatenate my data.frame according 
with
> the column "b" and make a new data.frame with the information in the 
others
> columns. 
> 
> >table1
>          a                    b         c             d
> 1      E001234      TSA    IP234   like_domain
> 2      E001234      TSB    IP234   like_domain 
> 3      E001234      TSC    IP234   like_domain
> 4      E001234      TSD    IP234   like_domain
> 5      E001235      TSA    IP235   two_domain
> 6      E001235      TSD    IP235   two_domain
> 7      E001235      TSS    IP235   two_domain
> 8      E001236      TSP    IP236   like_domain
> 9      E001236      TST    IP236   like_domain
> 10    E001237      TSV    IP237   simple_domain


Thanks for providing example data!  Very helpful.  You can make things 
even easier on r-help readers by using the dput() function to create code 
for us to easily recreate your data using copy/paste.  For example ...

table1 <- structure(list(a = c("E001234", "E001234", "E001234", "E001234", 

"E001235", "E001235", "E001235", "E001236", "E001236", "E001237"), 
b = c("TSA", "TSB", "TSC", "TSD", "TSA", "TSD", "TSS", "TSP", 
"TST", "TSV"), c = c("IP234", "IP234", "IP234", "IP234", "IP235", 
"IP235", "IP235", "IP236", "IP236", "IP237"), d = c("like_domain", 
"like_domain", "like_domain", "like_domain", "two_domain", "two_domain", 
"two_domain", "like_domain", "like_domain", "simple_domain")), .Names = 
c("a", 
"b", "c", "d"), class = "data.frame", row.names = c("1", "2", 
"3", "4", "5", "6", "7", "8", "9", "10"))


> I want my table in this way
> 
> >table_new
>          a                    b 
> c 
> d
> 1      E001234      TSA, TSB, TSC, TSD    IP234   like_domain
> 2      E001235                TSA, TSD, TSS    IP235   two_domain
> 3      E001236                 TSP, TSP, TST    IP236   like_domain
> 4      E001237                                   TSV    IP237 
> simple_domain
> 
> How can I do this in R? 
> 
> Thanks 


You can do this with the aggregate() and paste() functions in one fell 
swoop.

aggregate(b ~ a + c + d, data=table1, paste, sep=",")


Jean

	[[alternative HTML version deleted]]

