[R] Converting a data frame with values into a matrix/

Henrique Dallazuanna wwwhsd at gmail.com
Wed Mar 12 18:32:16 CET 2008


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