[R] Transform array in dataframe; melt(); reshape()

Patrick Connolly p_connolly at slingshot.co.nz
Tue Aug 11 22:00:52 CEST 2009


On Tue, 11-Aug-2009 at 07:15PM +0100, Cecilia Carmo wrote:

> Hi everyone.
>
> Could anyone help me to reshape my data?
>
> Reproducible example:
> firm<-sort(rep(1:1000,10),decreasing=F)
> year<-rep(1998:2007,1000)
> industry<-rep(c(rep(1,10),rep(2,10),rep(3,10),rep(4,10),rep(5,10),rep(6,10),rep(7,10),rep(8,10),rep(9,10),
> + rep(10,10)),1000)
> X1<-rnorm(10000)
> X2<-rnorm(10000,mean=0.5,sd=0.1)
> Y<-rnorm(10000,mean=0,sd=0.5)
> data<-data.frame(firm, industry,year,X1,X2,Y)
>
> With that data I have done:
> funcao<-function(data,...)(round(summary(lmList(Y~X1+X2| year, 
> na.action=na.omit,data))$coefficients,3))
> coef1<-daply(data,.(industry),"funcao")
> coef2<-aperm(coef1,c(2,4,3,1),resize=TRUE)
> coef3<-coef2[,,"Estimate",]
>
> Now I have an array with the coefficients of lmList but I need a 
> dataframe with this columns:
> Year   Industry    (Estimate)    X1      X2
> 

>
> I have tried melt () from package reshape, but it doesn’t do what I want 
> (or I don’t know how to transform the output it in a dataframe). Could 
> anyone help me?

You need to use the function cast as well.  

-- 
~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.   
   ___    Patrick Connolly   
 {~._.~}                   Great minds discuss ideas    
 _( Y )_  	         Average minds discuss events 
(:_~*~_:)                  Small minds discuss people  
 (_)-(_)  	                      ..... Eleanor Roosevelt
	  
~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.




More information about the R-help mailing list