[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