Alex Rivera | Logout

R package xtable, how to create a latextable with multiple rows and columns from R

Asked 2013-02-23T03:35:52.480
19

My goal is to create latextable with multirow/multicolumn features from R. The latextable I want should look like this:

               colLabel  |  colLabel2
                         |
                 a1  a2  |   a3    a4  
 -------------------------------------
             b1  1    2  |   5     6
 rowLabel1               |
             b2  3    4  |   7     8
 --------------------------------------
             b3  9   10  |   13    14
 rowLabel2               |
             b4  11  12  |   15    16
 --------------------------------------

I am currently using xtable but I cannot figure out how to create multirow using this package. Could anyone tell me how to create such table?

Thank you in advance

Edit
Report

1 Answer

11

You will have to be more specific about what exactly you are trying to tabulate, but I guess tabular function from the tables package might be helpful.

Here's an example of tabulating means of a variable according to 4 binary factor variables:

mydf <- data.frame(rowFactor1 = sample(letters[1:2], 100, replace = TRUE), 
                colFactor1 = sample(LETTERS[1:2], 100, replace = TRUE), 
                x = rnorm(100), 
                rowFactor2 = sample(1:2, 100, replace = TRUE), 
                colFactor2 = sample(1:2, 100, replace = TRUE))

tab1 <- tabular(Heading()*RowFactor(rowFactor2, spacing = 1, 
                        levelnames = c("rowLabel1", "rowLabel2"))*
                Heading()*RowFactor(rowFactor1, 
                        levelnames = c("b1", "b2")) ~ 
                Heading()*Factor(colFactor2, 
                        levelnames = c("colLabel1", "colLabel2") )*
                Heading()*Factor(colFactor1, 
                        levelnames = c("a1", "a2"))*
                Heading()*(x)*Heading()*(mean), 
        data = mydf)

which gives you something like this, but nicely formated when using the latex output

                                                                colLabel1         colLabel2        
                                                                a1        a2      a1        a2     
 \\nopagebreak rowLabel1                       \\nopagebreak b1 -0.1450    0.2633  0.91454   0.1222
                                               \\nopagebreak b2 -0.1499   -0.4290 -0.09706  -0.6977
 \\rule{0pt}{1.7\\normalbaselineskip}rowLabel2 \\nopagebreak b1  0.6976   -0.4888 -0.68492   1.6764
                                               \\nopagebreak b2 -0.2369   -0.1428 -0.66405   0.9469

Finally latex(tab1) gives you the latex code:

\begin{tabular}{llcccc}
\hline
& & \multicolumn{2}
answered 2013-02-23T05:47:10.117

Your Answer