[R] transformation of data.frame
Petr PIKAL
petr.pikal at precheza.cz
Thu Jul 8 13:45:36 CEST 2010
Hi
r-help-bounces at r-project.org napsal dne 08.07.2010 12:02:45:
> I don't understand it. When I'm doing this example it wirks fine, but
when
> I'm adding the "GO:" to the beginning of the first column (as to see in
my
> wanted result table:
> GO0042787
> GO0016070
> GO0016070
>
> I'm getting a list of warning:
> Warning messages:
> 1: In storage.mode(xi) <- a$sm : NAs introduced by coercion
> 2: In storage.mode(xi) <- a$sm : NAs introduced by coercion
> ...
> 9: In storage.mode(xi) <- a$sm : NAs introduced by coercion
> 10: In storage.mode(xi) <- a$sm : NAs introduced by coercion
Not sure what is wrong, it seems to me that your ID become factor.
Having your data in dataframe test as character columns
see ?str
test.ag<-aggregate(test$X.gen, list(test$ID), function(x) paste(x,
collapse=":"))
I can make aggregated data frame
paste("GO",test.ag[,1], sep="")
[1] "GO0006417" "GO0006511" "GO0007409" "GO0016070" "GO0042787"
and it is strightforward to add GO at the beginning.
I leave how to add this result to your aggregated data frame as an
exercise.
Regards
Petr
>
> What did I do wrong here?
>
> Assa
>
> On Thu, Jul 8, 2010 at 11:09, Søren Højsgaard
<Soren.Hojsgaard at agrsci.dk>wrote:
>
> > Like this?
> >
> > > library(doBy)
> > > (ddd <- read.table("foo.txt",header=T))
> > ID gen
> > 1 42787 gen2
> > 2 16070 gen2
> > 3 16070 gen3
> > 4 7409 Gen1
> > 5 7409 gen3
> > 6 6511 gen2
> > 7 6417 gen3
> > 8 16070 gen4
> > 9 6511 gen4
> > > aa<-lapplyBy(~ID, data=ddd,
> > + FUN=function(uu){
> > + list(uu$ID[1], paste(uu$gen, collapse=":"))
> > + })
> > >
> > > do.call(rbind,aa)
> > [,1] [,2]
> > 42787 42787 "gen2"
> > 16070 16070 "gen2:gen3:gen4"
> > 7409 7409 "Gen1:gen3"
> > 6511 6511 "gen2:gen4"
> > 6417 6417 "gen3"
> >
> > Regards
> > Søren
> >
> >
> >
> >
> >
> > -----Oprindelig meddelelse-----
> > Fra: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org
] PĂĄ
> > vegne af Assa Yeroslaviz
> > Sendt: 8. juli 2010 10:45
> > Til: r-help at stat.math.ethz.ch
> > Emne: [R] transformation of data.frame
> >
> > Hello all R users,
> >
> > I have a problems transforming (or maybe better regrouping) a
data.frame.
> > I have a big data.frame, which I would like to sum up according to a
> > specific column.
> >
> > This is an example of my matrix:
> > ID gen
> > 0042787 gen2
> > 0016070 gen2
> > 0016070 gen3
> > 0007409 Gen1
> > 0007409 gen3
> > 0006511 gen2
> > 0006417 gen3
> > 0016070 gen4
> > 0006511 gen4
> >
> > I want to rearrange the matrix according to column GO, so that it will
look
> > likes that:
> >
> > GO:0042787 gen2
> > GO:0016070 gen2 : gen3 : gen4
> > GO:0007409 gen1 : gen3
> > GO:0006511 gen2 : gen4
> > GO:0006417 gen3
> >
> > I've tried it with the package doBy (lapplyBy and paste) but it just
> > doesn't
> > work out.
> >
> > I will be very happy for any suggestions you might have to help me.
> >
> > Thanks
> >
> > Assa
> >
> > [[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.
> >
>
> [[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