Moysey Abramowitz
Moysey Abramowitz

Reputation: 380

Transpose a table, exported from R to Latex with latex() from Hmisc package

I am trying to write output from R to Latex. I expect to get nicely formatted table from R:

raw

When I use latex() function from Hmisc package, I get this:

enter image description here

How can I transpose the table, making it 2x6 instead of 6x2? I know that there must exist some parameter for this in latex() function, but I can not figure this out.

Upvotes: 2

Views: 1909

Answers (2)

Adam Quek
Adam Quek

Reputation: 7163

Summary returns a weird character string that is just plain ugly in my opinion. Here's an alternative for getting similar summary output in a table:

summ <- function(x){
    tmp<-quantile(x, c(0,.25,.5,.75,1))
    names(tmp)<-c("Min", "1st Qu.", "Median", "3rd Qu.", "Max")
    return(tmp)}

Sapply data with the function to return more flexible data.frame:

t(sapply(swiss, summ) )

                   Min 1st Qu. Median 3rd Qu.   Max
Fertility        35.00  64.700  70.40  78.450  92.5
Agriculture       1.20  35.900  54.10  67.650  89.7
Examination       3.00  12.000  16.00  22.000  37.0
Education         1.00   6.000   8.00  12.000  53.0
Catholic          2.15   5.195  15.14  93.125 100.0
Infant.Mortality 10.80  18.150  20.00  21.700  26.6

With @pachamaltese answer above, the final summary table should be free of the unncessary Min. : within the table.

Upvotes: 2

pachadotdev
pachadotdev

Reputation: 3775

You should provide a MWE :)

What I did is this

setwd("/myfolder")    
library(Hmisc)
table <- summary(swiss)
table_transpose <- t(table)

latex(table)
latex(table_transpose)

"t" means transpose and it is applicable to a matrix or a table

After running latex() R saves two .tex files that I have to paste in a file with a suitable structure or it won't compile.

This is the final .tex

\documentclass[12pt,letterpaper,landscape]{article}
\leftmargin=0.25in
\oddsidemargin=0.25in
\textwidth=6.0in
\topmargin=-0.9in
\textheight=9.25in
\usepackage[margin=1in]{geometry}

\begin{document}

\begin{table}[!tbp]
\begin{center}
\begin{tabular}{lllllll}
\hline\hline
\multicolumn{1}{l}{table}&\multicolumn{1}{c}{}&\multicolumn{1}{c}{}&\multicolumn{1}{c}{}&\multicolumn{1}{c}{}&\multicolumn{1}{c}{}&\multicolumn{1}{c}{}\tabularnewline
\hline
  Fertility&Min.   :35.00  &1st Qu.:64.70  &Median :70.40  &Mean   :70.14  &3rd Qu.:78.45  &Max.   :92.50  \tabularnewline
 Agriculture&Min.   : 1.20  &1st Qu.:35.90  &Median :54.10  &Mean   :50.66  &3rd Qu.:67.65  &Max.   :89.70  \tabularnewline
 Examination&Min.   : 3.00  &1st Qu.:12.00  &Median :16.00  &Mean   :16.49  &3rd Qu.:22.00  &Max.   :37.00  \tabularnewline
  Education&Min.   : 1.00  &1st Qu.: 6.00  &Median : 8.00  &Mean   :10.98  &3rd Qu.:12.00  &Max.   :53.00  \tabularnewline
   Catholic&Min.   :  2.150  &1st Qu.:  5.195  &Median : 15.140  &Mean   : 41.144  &3rd Qu.: 93.125  &Max.   :100.000  \tabularnewline
Infant.Mortality&Min.   :10.80  &1st Qu.:18.15  &Median :20.00  &Mean   :19.94  &3rd Qu.:21.70  &Max.   :26.60  \tabularnewline
\hline
\end{tabular}\end{center}
\end{table}

\begin{table}[!tbp]
\begin{center}
\begin{tabular}{lllllll}
\hline\hline
\multicolumn{1}{l}{summary}&\multicolumn{1}{c}{  Fertility}&\multicolumn{1}{c}{ Agriculture}&\multicolumn{1}{c}{ Examination}&\multicolumn{1}{c}{  Education}&\multicolumn{1}{c}{   Catholic}&\multicolumn{1}{c}{Infant.Mortality}\tabularnewline
\hline
&Min.   :35.00  &Min.   : 1.20  &Min.   : 3.00  &Min.   : 1.00  &Min.   :  2.150  &Min.   :10.80  \tabularnewline
&1st Qu.:64.70  &1st Qu.:35.90  &1st Qu.:12.00  &1st Qu.: 6.00  &1st Qu.:  5.195  &1st Qu.:18.15  \tabularnewline
&Median :70.40  &Median :54.10  &Median :16.00  &Median : 8.00  &Median : 15.140  &Median :20.00  \tabularnewline
&Mean   :70.14  &Mean   :50.66  &Mean   :16.49  &Mean   :10.98  &Mean   : 41.144  &Mean   :19.94  \tabularnewline
&3rd Qu.:78.45  &3rd Qu.:67.65  &3rd Qu.:22.00  &3rd Qu.:12.00  &3rd Qu.: 93.125  &3rd Qu.:21.70  \tabularnewline
&Max.   :92.50  &Max.   :89.70  &Max.   :37.00  &Max.   :53.00  &Max.   :100.000  &Max.   :26.60  \tabularnewline
\hline
\end{tabular}\end{center}
\end{table}

\end{document}

And this is the result that needs some makeup

enter image description here

Check here for more tools like xtable Tools for making latex tables in R

Upvotes: 1

Related Questions