[R] Converting a data frame with values into a matrix/
Srinivas Iyyer
srini_iyyer_bio at yahoo.com
Wed Mar 12 18:53:12 CET 2008
Hi Henrique,
Thanks for your tip.
how can I map xx onto xy (where xy is a matrix I
created).
> > > xy
Mike Carl Gene James Dough
A 1 1 1 1 1
C 1 1 1 1 1
B 1 1 1 1 1
If I can map xx onto xy, I can have '1' without NAs.
Thanks
Srini
--- Henrique Dallazuanna <wwwhsd at gmail.com> wrote:
> Perhaps in this case:
>
> noquote(with(xx, tapply(NES, list(Class, Name),
> paste)))
>
>
> On 12/03/2008, Srinivas Iyyer
> <srini_iyyer_bio at yahoo.com> wrote:
> > Dear Group,
> > I have a data frame like the following:
> >
> >
> > x <- c("Mike","A",0.01)
> > x1 <- c("Carl","A",0.2)
> > x2 <- c("Gene","C",0.3)
> > x3 <- c("James","A",-0.3)
> > x4 <- c("Dough","B",0)
> > xx <- rbind(x,x1,x2,x3,x4)
> > colnames(xx)<-c("Name","Class","NES")
> > xx <-as.data.frame(xx)
> >
> > > xx
> > Name Class NES
> > x Mike A 0.01
> > x1 Carl A 0.2
> > x2 Gene C 0.3
> > x3 James A -0.3
> > x4 Dough B 0
> >
> >
> > Now I want to create a matrix with unique xx$Name
> on
> > columns and unique xx$Class as rows. I want to
> fill
> > my choice of values (in this case 1) if data
> point not
> > available.
> >
> >
> > xy <-
> >
>
matrix(1,length(unique(xx$Class)),length(unique(xx[,1])))
> > colnames(xy)<-unique(xx[,1])
> > rownames(xy)<-unique(xx$Class)
> >
> > > xy
> > Mike Carl Gene James Dough
> > A 1 1 1 1 1
> > C 1 1 1 1 1
> > B 1 1 1 1 1
> >
> >
> >
> >
> >
> > I would love to have :
> >
> > Mike Carl Gene James Dough
> > A 0.01 0.2 1 -0.3 1
> > C 1 1 1 0.3 1
> > B 1 1 1 1 0
> >
> >
> >
> >
> > If I am not wrong this is called contigency or
> > frequeny table.
> >
> > I tried xtabs on this.
> >
> > > z <- xtabs(NES ~ Name+Class,data=xx)
> > Error in Summary.factor(4L, na.rm = FALSE) :
> > sum not meaningful for factors
> >
> >
> > I tried on other data frames, it worked. BUT the
> > problem is it gives me 0.0000 even a value is not
> > available for that row and column. So if I have
> data
> > -0.00 it is considered 0.
> >
> > I tried. drop.unused.levels = T, I did not get
> what I
> > want. I want all row.col values not available to
> be 1.
> >
> >
> > Is there any other trick where I map by row and
> column
> > names instead of using advanced xtabs.
> >
> > thanks
> > Srini
> >
> > ______________________________________________
> > 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.
> >
>
>
> --
> Henrique Dallazuanna
> Curitiba-Paraná-Brasil
> 25° 25' 40" S 49° 16' 22" O
>
More information about the R-help
mailing list