El 17/12/10 10:40, Amy Milano escribió:
> Dear R helpers
>
> I have one data as given below.
>
> date                     value1          value2             value3
> 30-Nov-2010           100                 40                 61
> 25-Nov-2010           108                 31                 88
> 14-Sep-2010            11                 180               56
>
> I want the following output
>
> date                 name       amount
> 30-Nov-2010      value1        100
> 30-Nov-2010      value2         40
> 30-Nov-2010      value3         61
> 25-Nov-2010      value1       108
> 25-Nov-2010      value2         31
> 25-Nov-2010      value3         88 
> 14-Sep-2010      value1        11
> 14-Sep-2010      value2      180
> 14-Sep-2010      value3      56
>
>
> I have presented here a small part of large data. I tried to convert the data into matrix, then transpose etc. but things are not working for me. Please guide
>
> Thanking in advance
>
> Amy Milano
>
>
>   
>
>
>
>
> 	[[alternative HTML version deleted]]
>
>
>
> ______________________________________________
> R-help@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.
First, you must load the following libraries:

library( plyr )
library( reshape )


Next, define the following function:

Transform <- function(d.f){aux <- dim(d.f);files <- aux[1];columnes <- 
aux[2];aux2<-as.factor(rep(1:files,columnes));return(cbind(aux2,melt(d.f)))}

So, if you put your data.frame into object aux:

aux <- data.frame(c(100,108,11),c(40,31,180),c(61,88,56))
colnames(aux) <- c("value1","value2","value3")
rownames(aux) <- c("30 Nov 2010","25 Nov 2010","14 Sep 2010")


you can transform it in the following way:

aux2 <- Transform(aux)
aux2[,1] <- as.factor(rep(rownames(aux),3))

Finally, you obtain what you want.

Arnau.


	[[alternative HTML version deleted]]

