Search code examples
rstatisticsxtable

Variables Overview with xtable in R


I'm wondering if it's possible to create a xtable from the command str(x) to get an overview from the variables you use. This would be a nice feature to introduce someone to the dataset, but it's annoying to create it by yourself. So whta I tried is to make a xtable like this:

str(cars)
require(xtable)
xtable(str(cars))

the cars dataset is given from R. Unfortunately xtable doesn't give a Latexcode for str(). Is it possible outsmart R here? Here are the main commands that xtable will understand:

methods(xtable)

Any ideas?


Solution

  • Since xtable provides best result when used with data.frames and matrix objects, I'd recommend something like this:

    library(xtable)
    library(plyr)
    dtf <- sapply(mtcars, each(min, max, mean, sd, var, median, IQR))
    xtable(dtf)
    % latex table generated in R 2.12.2 by xtable 1.5-6 package                                                                  
    % Thu May  5 19:40:08 2011                                                                                                   
    \begin{table}[ht]                                                                                                            
    \begin{center}                                                                                                               
    \begin{tabular}{rrrrrrrrrrrr}                                                                                                
      \hline                                                                                                                     
     & mpg & cyl & disp & hp & drat & wt & qsec & vs & am & gear & carb \\                                                       
      \hline                                                                                                                     
    min & 10.40 & 4.00 & 71.10 & 52.00 & 2.76 & 1.51 & 14.50 & 0.00 & 0.00 & 3.00 & 1.00 \\                                      
      max & 33.90 & 8.00 & 472.00 & 335.00 & 4.93 & 5.42 & 22.90 & 1.00 & 1.00 & 5.00 & 8.00 \\                                  
      mean & 20.09 & 6.19 & 230.72 & 146.69 & 3.60 & 3.22 & 17.85 & 0.44 & 0.41 & 3.69 & 2.81 \\                                 
      sd & 6.03 & 1.79 & 123.94 & 68.56 & 0.53 & 0.98 & 1.79 & 0.50 & 0.50 & 0.74 & 1.62 \\                                      
      var & 36.32 & 3.19 & 15360.80 & 4700.87 & 0.29 & 0.96 & 3.19 & 0.25 & 0.25 & 0.54 & 2.61 \\                                
      median & 19.20 & 6.00 & 196.30 & 123.00 & 3.70 & 3.33 & 17.71 & 0.00 & 0.00 & 4.00 & 2.00 \\                               
      IQR & 7.38 & 4.00 & 205.18 & 83.50 & 0.84 & 1.03 & 2.01 & 1.00 & 1.00 & 1.00 & 2.00 \\                                     
       \hline                                                                                                                    
    \end{tabular}                                                                                                                
    \end{center}                                                                                                                 
    \end{table} 
    

    Sorry for lengthy output. You can grab PDF here. each is a very versatile function, since you can define custom summary quite easy. Besides, str returns output to stdout, so you can't retrieve summary for specific variables. In this case, sapply will simplify the result, yielding matrix instead data.frame. But that's not so problematic, right?