Skip to content
Prev 307704 / 398506 Next

Exporting summary plm results to latex

HI Sebastian,

Sorry, I found an error in my solution (the values and coefficients got mixed up in sorting).
Try this:

library(reshape)
extract.plm <- function(model) {
if (!class(model)[1] == "plm") {
stop("Internal error: Incorrect model type! Should be a plm object!")
}
zz1<-summary(model)$coef[,c(1,2,4)]
zz2<-as.data.frame(apply(zz1,2,function(x) sprintf("%.3f",x)))
zz2[]<-sapply(zz2,function(x) as.numeric(as.character(x)))
zz3<-data.frame(Coefficient=row.names(zz1),zz2)
zz3<-melt(zz3,by=Coefficient)
zz4<-within(zz3,{Coefficient<-as.character(Coefficient);variable<-as.character(variable)})
zz5<-ddply(zz4,.(Coefficient),function(x) x)
zz5$value[zz5$variable=="Estimate"]<-ifelse(zz5$value[zz5$variable=="Pr...t.."]<0.05 & zz5$value[zz5$variable=="Pr...t.."]>=0.01,gsub("(.*)","\\1*",zz5$value[zz5$variable=="Estimate"]),ifelse(zz5$value[zz5$variable=="Pr...t.."]<0.01,gsub("(.*)","\\1**",zz5$value[zz5$variable=="Estimate"]),zz5$value[zz5$variable=="Estimate"]))
zz5$value[zz5$variable=="Std..Error"]<-gsub("(.*)","(\\1)",zz5$value[zz5$variable=="Std..Error"])
zz6<-zz5[!zz5$variable=="Pr...t..",]
rownames(zz6)<-1:nrow(zz6)
?res<-zz6[,c(1,3)]
res
}
library(plm)
data("Produc", package = "plm")
zz <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, index = c("state","year"))

extract.plm(zz)
#Using Coefficient as id variables
#? Coefficient??? value
#1??? log(emp)? 0.768**
#2??? log(emp)?? (0.03)
#3???? log(pc)? 0.292**
#4???? log(pc)? (0.025)
#5?? log(pcap)?? -0.026
#6?? log(pcap)? (0.029)
#7?????? unemp -0.005**
#8?????? unemp? (0.001)
?summary(zz)$coef
#????????????? Estimate?? Std. Error??? t-value????? Pr(>|t|)
#log(pcap) -0.026149654 0.0290015755 -0.9016632? 3.675200e-01
#log(pc)??? 0.292006925 0.0251196728 11.6246309? 7.075069e-29
#log(emp)?? 0.768159473 0.0300917394 25.5272539 2.021455e-104
#unemp???? -0.005297741 0.0009887257 -5.3581508? 1.113946e-07


library(xtable)
xtable(extract.plm(zz))
Using Coefficient as id variables
% latex table generated in R 2.15.0 by xtable 1.7-0 package
% Thu Oct 11 15:28:12 2012
\begin{table}[ht]
\begin{center}
\begin{tabular}{rll}
? \hline
?& Coefficient & value \\ 
? \hline
1 & log(emp) & 0.768** \\ 
? 2 & log(emp) & (0.03) \\ 
? 3 & log(pc) & 0.292** \\ 
? 4 & log(pc) & (0.025) \\ 
? 5 & log(pcap) & -0.026 \\ 
? 6 & log(pcap) & (0.029) \\ 
? 7 & unemp & -0.005** \\ 
? 8 & unemp & (0.001) \\ 
?? \hline
\end{tabular}
\end{center}
\end{table}


I used this example because your example is a bit restricted in the sense that there was only one independent variable.? In that case, some adjustments need to be made in the function:

#With your example dataset 

x <- rnorm(270)
y <- rnorm(270)
t <- rep(1:3,30)
i <- rep(1:90, each=3)
data <- data.frame(i,t,x,y)
fe <- plm(y~x,data=data,model="within")

extract.plm <- function(model) {

if (!class(model)[1] == "plm") {
stop("Internal error: Incorrect model type! Should be a plm object!")
}
tab1 <- summary(model)$coef[,1:2]
tab1[1]<-ifelse(summary(model)$coef[,4]<0.05& summary(model)$coef[,4]>=0.01, gsub("(.*)","\\1*",tab1[1]),ifelse(summary(model)$coef[,4]<0.01,gsub("(.*)","\\1**",tab1[1]),tab1[1]))
tab2<-melt(tab1)
row.names(tab2)[2]<-""
tab2<-within(tab2,{value=as.character(value)})
tab2[2,1]<-gsub("(.*)","(\\1)",sprintf("%.3f",as.numeric(as.character(tab2[2,1]))))
tab2
}
extract.plm(fe)
xtable(extract.plm(fe))

% latex table generated in R 2.15.0 by xtable 1.7-0 package
% Thu Oct 11 15:56:20 2012
\begin{table}[ht]
\begin{center}
\begin{tabular}{rl}
? \hline
?& value \\ 
? \hline
Estimate & -0.154513026282509* \\ 
?? & (0.074) \\ 
?? \hline
\end{tabular}
\end{center}
\end{table}


I hope this helps.
A.K.




----- Original Message -----
From: Sebastian Barfort <sb3730 at nyu.edu>
To: Duncan Mackay <mackay at northnet.com.au>
Cc: r-help-r-project.org <r-help at r-project.org>
Sent: Wednesday, October 10, 2012 7:45 PM
Subject: Re: [R] Exporting summary plm results to latex

I am also interested in the standard errors, but beneath not next to the point estimates which is standard in the xtable package. 
If you by any chance remember the name of the package or how to do it that would be much appreciated!

Cheers,
Sebastian
On Oct 10, 2012, at 7:10 PM, Duncan Mackay <mackay at northnet.com.au> wrote:

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