[R] Converting 3 columns of a data frame into a matrix

Jeff08 jefferyding at gmail.com
Tue Jun 22 09:07:08 CEST 2010


##I have also tried the reshape package
library(reshape)
mm  <- melt(df, id=c("date_", "id"))
mm1  <- cast(mm, date_~id)

aba <- mm1[,-1]

final <- as.matrix(aba)
colnames(final)  <-  df$id
rownames(final) <- mm1$date_
final

##Again it works perfectly here, but when I get to my real dataset, I get a
"Cannot allocate vector of size 27.4 MB" error

It seems that the main problem is memory size. Is there an efficient way to
do this?

colnames(df)<-c("date_","id","totret")
library(reshape)
mm  <- melt(df, id=c("date_", "id"))
mm1  <- cast(mm, date_~id)
 
aba <- mm1[,2:2365]
 
final <- as.matrix(aba)
colnames(final)  <-  Returns.nodup$id
rownames(final) <- mm1$date_


Jeff08 wrote:
> 
> df<-data.frame()
> df[1:8,1]<-c("1","2","5","3","1","4","3","5") ##identifier 1
> df[1:8,2]<-c("c","a","b","c","a","b","b","a") ##identifier 2
> df[1:8,3]<-c(1,2,3,4,5,6,7,8) ##value
> 
> ##Each unique combination of identifiers identifies a datapoint
> 
> 
> ##What I am trying to do is create a matrix with values of the third
> column
> ## and rows/column names of the 1st and 2nd column. As you can see, a lot
> of
> ## combinations of identifier1 and identifier 2, for example (1,b), do not
> ## have a value attached to them, and I would like those values in the
> matrix
> ## to be NA.
> 
> ##From the ecodist, I have tried crosstab(df[,1],df[,2],df[,3])
> ##It works perfectly in this case, but when I use it on my actual
> data.frame
> ##It ALWAYS crashes..differences between my real data.frame
> ## 1)Actual df is 3 million rows, 2)df[,1] and df[,2] are
> ## of class "factor" rather than class "character"
> ## knowing this I have tried as.character(df[,1]) & same for df2
> ##but to no avail
> 

-- 
View this message in context: http://r.789695.n4.nabble.com/Converting-3-columns-of-a-data-frame-into-a-matrix-tp2263540p2263695.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list