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

Cecilia Carmo
Tue, 11 Aug 2009 18:15:43 -0000

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?

Thanks in advance,

Cec?lia Carmo
(Universidade de Aveiro  -  Portugal)