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

From: John Kane <jrkrideau_at_yahoo.ca>
Date: Wed, 12 Mar 2008 14:03:33 -0400 (EDT)


The way that you have set up the data.frame is rather unusual. It makes NES a factor which I suspect you don't want. Do str(xx) to see what I mean

Here is a way that I think does what you want but with the data.frame constructed in a different manner. Again do str(aa) to see the difference



aa <- data.frame(Name=c( "Mike" ,"Carl", "Gene", "James","Dough"),
         Class=c(  "A",  "A",  "C",  "A",  "B"),
         NES=c( 0.01, 0.2, 0.3, -0.3, 0) )  
aa
         

library(reshape)
mm <- melt(aa, id=c("Name", "Class"))
mm1 <- cast(mm, Class~Name)

aba <- mm1[,2:6]
aba[is.na(aba)] <- 1

final <- data.frame(mm1$Class, aba)
names(final) <- names(mm1)
final


> 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.
>


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. Received on Wed 12 Mar 2008 - 18:20:23 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 12 Mar 2008 - 19:30:22 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive