numberset - real number latex




Strumenti per realizzare tavoli in lattice in R (6)

È inoltre possibile utilizzare la funzione Latextable dal pacchetto R micsFuncs:

miscFuncs

latextable (M) dove M è una matrice con voci alfabetiche e numeriche miste, emette una tabella LaTeX di base sullo schermo, che può essere copiata e incollata in un documento LaTeX. Dove ci sono piccoli numeri, li sostituisce anche con la notazione dell'indice (es. 1.2x10 ^ {- 3}).

Su richiesta generale, un wiki della comunità sulla produzione di tabelle di lattice in R. In questo post darò una panoramica dei pacchetti e dei blog più comunemente usati con il codice per la produzione di tabelle di lattice da oggetti meno diretti. Sentiti libero di aggiungere qualsiasi cosa mi sia sfuggita e / o dare consigli, suggerimenti e piccoli trucchi su come produrre tavoli in lattice ben formattati con R.

Pacchetti :

  • xtable : per tabelle standard degli oggetti più semplici. Una bella galleria con esempi può essere trovata here .
  • memisc : strumento per la gestione dei dati del sondaggio, contiene alcuni strumenti per le tabelle del lattice delle stime del modello di regressione (di base).
  • Hmisc contiene una funzione latex() che crea un file tex contenente l'oggetto di scelta. È abbastanza flessibile e può anche produrre tabelle di lattice longtable . Ci sono molte informazioni nel file di aiuto ?latex
  • miscFuncs ha una funzione ordinata 'latextable' che converte i dati della matrice con voci alfabetiche e numeriche miste in una tabella LaTeX e li stampa sulla console, in modo che possano essere copiati e incollati in un documento LaTeX.
  • texreg pacchetto texreg ( carta JSS ) converte l'output del modello statistico in tabelle LaTeX. Unisce più modelli. Può far fronte a circa 50 diversi tipi di modelli, inclusi i modelli di rete e i modelli multilivello (lme e lme4).
  • reporttools pacchetto reporttools ( carta JSS ) è un'altra opzione per le statistiche descrittive su variabili continue, categoriali e di data.
  • tables pacchetto di tables è forse il pacchetto di creazione di tabelle LaTeX più generico in R per le statistiche descrittive
  • stargazer pacchetto stargazer rende piacevoli le tabelle riassuntive del modello statistico comparativo

Blog e snippet di codice

Domande correlate :


Due utilità nel pacchetto taRifx possono essere utilizzate in concerto per produrre tabelle multi-riga di gerarchie annidate.

library(datasets)
library(taRifx)
library(xtable)

test.by <- bytable(ChickWeight$weight, list( ChickWeight$Chick, ChickWeight$Diet) )
colnames(test.by) <- c('Diet','Chick','Mean Weight')
print(latex.table.by(test.by), include.rownames = FALSE, include.colnames = TRUE, sanitize.text.function = force)
#   then add \usepackage{multirow} to the preamble of your LaTeX document
#   for longtable support, add ,tabular.environment='longtable' to the print command (plus add in ,floating=FALSE), then \usepackage{longtable} to the LaTeX preamble


Ho alcuni trucchi e lavoro intorno alle 'caratteristiche' interessanti di xtable e latex che condividerò qui.

Trucco n. 1: rimozione di duplicati in colonne e trucco n. 2: utilizzo di tabelle a fogli mobili

Innanzitutto, carica i pacchetti e definisci la mia funzione pulita

<<label=first, include=FALSE, echo=FALSE>>= 
    library(xtable)
    library(plyr)

    cleanf <- function(x){     
        oldx <- c(FALSE, x[-1]==x[-length(x)])  
        # is the value equal to the previous?    
        res <- x
        res[oldx] <- NA
        return(res)} 

Ora genera alcuni dati falsi

data<-data.frame(animal=sample(c("elephant", "dog", "cat", "fish", "snake"), 100,replace=TRUE),
            colour=sample(c("red", "blue", "green", "yellow"), 100,replace=TRUE),
            size=rnorm(100,mean=500, sd=150),
            age=rlnorm(100, meanlog=3, sdlog=0.5))

    #generate a table
    datatable<-ddply(data, .(animal, colour), function(df) {
                return(data.frame(size=mean(df$size), age=mean(df$age)))
            })

Ora possiamo generare una tabella e utilizzare la funzione clean per rimuovere le voci duplicate nelle colonne dell'etichetta.

cleandata<-datatable
cleandata$animal<-cleanf(cleandata$animal)
cleandata$colour<-cleanf(cleandata$colour)
@ 

questo è un normale xtable

<<label=normal, results=tex, echo=FALSE>>=
print(
    xtable(
        datatable
        ),
        tabular.environment='longtable',
        latex.environments=c("center"), 
        floating=FALSE, 
        include.rownames=FALSE
    )
@ 

questo è un normale xtable in cui una funzione personalizzata ha trasformato i duplicati in NA

<<label=cleandata, results=tex, echo=FALSE>>=
print(
    xtable(
        cleandata
        ),
        tabular.environment='longtable',
        latex.environments=c("center"), 
        floating=FALSE, 
        include.rownames=FALSE
    )
@ 

Questa tabella usa il pacchetto booktab (e ha bisogno di un \ usepackage {booktabs} nelle intestazioni)

\begin{table}[!h] 
        \centering
        \caption{table using booktabs.}
        \label{tab:mytable}
<<label=booktabs, echo=F,results=tex>>= 
            mat <- xtable(cleandata,digits=rep(2,ncol(cleandata)+1))
            foo<-0:(length(mat$animal))
            bar<-foo[!is.na(mat$animal)]
            print(mat, 
                  sanitize.text.function = function(x){x},
                  floating=FALSE,
                  include.rownames=FALSE,
                  hline.after=NULL, 
                  add.to.row=list(pos=list(-1,bar,nrow(mat)), 
                  command=c("\\toprule ", "\\midrule ", "\\bottomrule ")))
  #could extend this with \cmidrule to have a partial line over
  #a sub category column and \addlinespace to add space before a total row
@ 

Il pacchetto stargazer è un'altra buona opzione. Supporta oggetti da molte funzioni e pacchetti comunemente utilizzati (lm, glm, svyreg, survival, pscl, AER), nonché da zelig. Oltre alle tabelle di regressione, può anche generare statistiche riassuntive per i frame di dati o emettere direttamente il contenuto dei frame di dati.


Vorrei aggiungere una menzione del pacchetto "brew". È possibile scrivere un file modello di brew che sarebbe LaTeX con i segnaposti, quindi "prepararlo" per creare un file .tex da includere o immettere nel proprio LaTeX. Qualcosa di simile a:

\begin{tabular}{l l}
A & <%= fit$A %> \\
B & <%= fit$B %> \\
\end{tabular}

La sintassi brew può anche gestire i loop, quindi puoi creare una riga tabella per ogni riga di un dataframe.


... e Trick # 3 Voci multilinea in un Xtable

Genera altri dati

moredata<-data.frame(Nominal=c(1:5), n=rep(5,5), 
        MeanLinBias=signif(rnorm(5, mean=0, sd=10), digits=4), 
        LinCI=paste("(",signif(rnorm(5,mean=-2, sd=5), digits=4),
                ", ", signif(rnorm(5, mean=2, sd=5), digits=4),")",sep=""),
        MeanQuadBias=signif(rnorm(5, mean=0, sd=10), digits=4), 
        QuadCI=paste("(",signif(rnorm(5,mean=-2, sd=5), digits=4),
                ", ", signif(rnorm(5, mean=2, sd=5), digits=4),")",sep=""))

names(moredata)<-c("Nominal", "n","Linear Model \nBias","Linear \nCI", "Quadratic Model \nBias", "Quadratic \nCI")

Ora produciamo il nostro xtable, usando la funzione sanitize per sostituire i nomi delle colonne con i comandi newline Latex corretti (inclusi i doppi backslash così R è felice)

<<label=multilinetable, results=tex, echo=FALSE>>=
foo<-xtable(moredata)
align(foo) <- c( rep('c',3),'p{1.8in}','p{2in}','p{1.8in}','p{2in}' )
print(foo, 
            floating=FALSE, 
            include.rownames=FALSE,
            sanitize.text.function = function(str) {
                str<-gsub("\n","\\\\", str, fixed=TRUE)

                return(str)
            }, 
            sanitize.colnames.function = function(str) {
                str<-c("Nominal", "n","\\centering Linear Model\\\\ \\% Bias","\\centering Linear \\\\ 95\\%CI", "\\centering Quadratic Model\\\\ \\%Bias", "\\centering Quadratic \\\\ 95\\%CI \\tabularnewline")
                return(str)
            })
@  

(anche se questo non è perfetto, dato che abbiamo bisogno di \ tabularnewline in modo che la tabella sia formattata correttamente, e Xtable inserisce ancora un finale \, quindi finiamo con una riga vuota sotto l'intestazione della tabella.)





latex