Skip to content
Prev 333756 / 398506 Next

xtable: custom row.names, move caption to top

With xtable, I'm producing one-way tables from table objects in 
horizontal form as shown below.
I'd like to change the labels used for the rows and move the caption to 
the top of the table,
as is typically standard for tables.  I can hand-edit, but would prefer 
to do it in code.

data(Saxony, package="vcd")
library(xtable)
saxtab <- xtable(t(addmargins(Saxony)), digits=0,
     caption="Number of male children in 6115 Saxony families of size 12")

print(saxtab)
 > print(saxtab)
% latex table generated in R 3.0.1 by xtable 1.7-1 package
% Wed Nov 27 09:12:16 2013
\begin{table}[ht]
\centering
\begin{tabular}{rrrrrrrrrrrrrrr}
   \hline
  & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & Sum \\
   \hline
1 & 3 & 24 & 104 & 286 & 670 & 1033 & 1343 & 1112 & 829 & 478 & 181 & 45 
& 7 & 6115 \\
    \hline
\end{tabular}
\caption{Number of male children in 6115 Saxony families of size 12}
\end{table}
 >

The desired form looks like this, with row.names = c("Males ($k$)", 
"Families ($n_k$)")

% latex table generated in R 3.0.1 by xtable 1.7-1 package
% Tue Nov 26 14:56:02 2013
\begin{table}[ht]
\caption{Number of male children in 6115 Saxony families of size 12} 
\label{tab:saxtab}
\centering
\begin{tabular}{l|rrrrrrrrrrrrrr}
   \hline
Males ($k$) & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & Sum \\
   \hline
Families ($n_k$) & 3 & 24 & 104 & 286 & 670 & 1033 & 1343 & 1112 & 829 & 
478 & 181 & 45 & 7 & 6115 \\
    \hline
\end{tabular}
\end{table}