2016-05-24 12 views
8

texreg aracılığıyla sütunları gruplandırılmış bir tablo oluşturmak istiyorum. Yalnızca satırları (groups) gruplandırılmış seçenekleri görebilirim. İşteTexicond çıkışıma multicolumns ekleme

set.seed(01349) 
DF <- data.frame(y = rnorm(100), x1A = rnorm(100), x2A = rnorm(100), 
       x1B = rnorm(100), x2B = rnorm(100)) 
regs <- lapply(paste0("x", 1:2, c("A", "A", "B", "B")), function(x) 
      lm(paste0("y ~ ", x), data = DF)) 

Ben düz texreg ile alabilirsiniz olduğunca yakın: Burada

bir örnek

texreg(regs, custom.coef.names = c("Intercept", rep("x", 4)), 
     custom.model.names = c("1", "2", "1", "2")) 

LaTeX çıkışı ile:

\begin{table} 
\begin{center} 
\begin{tabular}{l c c c c } 
\hline 
      & 1 & 2 & 1 & 2 \\ 
\hline 
Intercept & $-0.13$ & $-0.13$ & $-0.11$ & $-0.11$ \\ 
      & $(0.12)$ & $(0.12)$ & $(0.12)$ & $(0.12)$ \\ 
x   & $0.02$ & $0.07$ & $0.13$ & $-0.11$ \\ 
      & $(0.13)$ & $(0.12)$ & $(0.12)$ & $(0.13)$ \\ 
\hline 
R$^2$  & 0.00  & 0.00  & 0.01  & 0.01  \\ 
Adj. R$^2$ & -0.01 & -0.01 & 0.00  & -0.00 \\ 
Num. obs. & 100  & 100  & 100  & 100  \\ 
RMSE  & 1.18  & 1.17  & 1.17  & 1.17  \\ 
\hline 
\multicolumn{5}{l}{\scriptsize{$^{***}p<0.001$, $^{**}p<0.01$, $^*p<0.05$}} 
\end{tabular} 
\caption{Statistical models} 
\label{table:coefficients} 
\end{center} 
\end{table} 

Fazladan tercih ediyorum satır (% ile vurgulanır):

\begin{table} 
\begin{center} 
\begin{tabular}{l c c c c } 
\hline 
%*************A HEADER LINE HERE********************* 
& \multicolumn{2}{c}{A} & \multicolumn{2}{c}{B} \\ % 
%**************************************************** 
      & 1 & 2 & 1 & 2 \\ 
\hline 
Intercept & $-0.13$ & $-0.13$ & $-0.11$ & $-0.11$ \\ 
      & $(0.12)$ & $(0.12)$ & $(0.12)$ & $(0.12)$ \\ 
x   & $0.02$ & $0.07$ & $0.13$ & $-0.11$ \\ 
      & $(0.13)$ & $(0.12)$ & $(0.12)$ & $(0.13)$ \\ 
\hline 
R$^2$  & 0.00  & 0.00  & 0.01  & 0.01  \\ 
Adj. R$^2$ & -0.01 & -0.01 & 0.00  & -0.00 \\ 
Num. obs. & 100  & 100  & 100  & 100  \\ 
RMSE  & 1.18  & 1.17  & 1.17  & 1.17  \\ 
\hline 
\multicolumn{5}{l}{\scriptsize{$^{***}p<0.001$, $^{**}p<0.01$, $^*p<0.05$}} 
\end{tabular} 
\caption{Statistical models} 
\label{table:coefficients} 
\end{center} 
\end{table} 

Bir şey mi eksik veya bunu yapmak için yerleşik bir yol yok mu?

x <- capture.output(texreg(
    regs, custom.coef.names = c("Intercept", rep("x", 4)), 
    custom.model.names = c("1", "2", "1", "2"))) 

x[6] <- paste0("& \\multicolumn{2}{c}{A} & \\multicolumn{2}{c}{B} \\\\ \n", x[6]) 

cat(x, sep = "\n") 

Ama bu tabii ki biraz kanalı-bant-y var:

Benim çözümdür.

cevap

0

Sen konsol içine yazarak function kodunu okumak veya paketin texreg ait githubwebside den olabilir. Tablonun uzaklaştırmak

\begin{table} 
\begin{center} 
\begin{tabular}{l c c c c } 
\hline 
& Model 1 & Model 2 & Model 3 & Model 4 \\ 

ben kod hattı 469 içine baktı:

texreg 
function (l, file = NULL, single.row = FALSE, stars = c(0.001, 
    0.01, 0.05), custom.model.names = NULL,... 

Bu

4 model tablo için texreg çıktısıdır

string <- paste0(string, "\\begin{tabular}{", coldef, 
      "}", linesep) 

Sonra kendi değişikliklerini ekledim:

string <- paste0(string, "\\begin{tabular}{", coldef, 
      "}", linesep) 
     ## Additions 
     string <- paste0(string, "\\\\[-1.8ex]\\hline", linesep) 
     string <- paste0(string, "& \\multicolumn{", length(l), "}{c}{\\textit{Dependent variable:}} \\\\", linesep) 
     string <- paste0(string, "\\cline{2-5}", linesep) 
     string <- paste0(string, "\\\\[-1.8ex] & \\multicolumn{", length(l), "}{c}{", dep.var, "} \\\\", linesep) 

Sonra mesela farklı bir adla kaydetme fonksiyonu:

texreg2 <- function (l, file = NULL, single.row = FALSE, ...) 

Şimdi, fonksiyon paketinden iç işlevleri gerektiren

, kendi ortamında paketin ad için özel bir işlev eklemek gerekir böylece. Kolay peasy:

environment(texreg2) <- asNamespace('texreg') 

Artık yeni işlevini çağırabilirsiniz. Eklerim arasında üç satır ve stargazer benzeri bağımlı değişken için bir ad yer alıyor. Bu yöntemi beğenmediğiniz

texreg2(out, dep.var = "Normalize Citation Score") 

\begin{table} 
\begin{center} 
\begin{tabular}{l c c c c } 
\\[-1.8ex]\hline 
& \multicolumn{4}{c}{\textit{Dependent variable:}} \\ 
\cline{2-5} 
\\[-1.8ex] & \multicolumn{4}{c}{Normalize Citation Score} \\ 
\hline 
& Model 1 & Model 2 & Model 3 & Model 4 \\ 

Son olarak, bu question ödeme, regex ile çıktısı yapabilen.

+1

Gerçekten de bu yüzden bir süredir “çok noktaya” özelliğini eklemeyi düşünüyorum. Bunu bir işleve yazmaktan rahatsızlık duymak için biraz fazla özverili buluyorum ve sadece durumun kendi başına hallediyorum. Cevap için teşekkürler. – MichaelChirico