Domanda

Se ho il seguente frame di dati chiamato risultato

> result
     Name       CV      LCB       UCB
1  within 2.768443 1.869964  5.303702
2 between 4.733483 2.123816 18.551051
3   total 5.483625 3.590745 18.772389

> dput(result,"")
structure(list(Name = structure(c("within", "between", "total"
), .rk.invalid.fields = list(), .Label = character(0)), CV = c(2.768443, 
4.733483, 5.483625), LCB = c(1.869964, 2.123816, 3.590745), UCB = c(5.303702, 
18.551051, 18.772389)), .Names = c("Name", "CV", "LCB", "UCB"
), row.names = c(NA, 3L), class = "data.frame")

Qual è il modo migliore per presentare correttamente questi dati? Idealmente, vorrei un file di immagine che può essere incollato in un report o eventualmente un file HTML per rappresentare la tabella?

Punti extra per l'impostazione del numero di cifre significative.

È stato utile?

Soluzione

Vorrei usare xtable . Di solito lo uso con Sweave.

library(xtable)
d <- data.frame(letter=LETTERS, index=rnorm(52)) 
d.table <- xtable(d[1:5,])
print(d.table,type="html")

Se vuoi usarlo in un documento Sweave, lo useresti così:

<<label=tab1,echo=FALSE,results=tex>>=
xtable(d, caption = "Here is my caption", label = "tab:one",caption.placement = "top")
@

Altri suggerimenti

Per l'aspetto tabella, il pacchetto xtable arriva in mente in quanto può produrre output LaTeX (che puoi usare tramite Sweave per report professionali) e html.

Se lo combini in Sweave con grafici fantasiosi (vedi altre domande per gli esempi di ggplot) ci sei quasi.

library(ggplot2)
ggplot(result, aes(x = Name, y = CV, ymin = LCB, ymax = UCB)) + geom_errorbar() + geom_point()
ggplot(result, aes(x = Name, y = CV, ymin = LCB, ymax = UCB)) + geom_pointrange()

Non posso commentare su come creare una bella tabella, ma per impostare cifre significative, la cosa più semplice da fare (per questi dati di esempio, sia chiaro) sarebbe spostare Nome su rownames e arrotondare il tutto.

#Set the rownames equal to Name - assuming all unique
rownames(result) <- result$Name  
#Drop the Name column so that round() can coerce
#result.mat to a matrix
result.mat <- result[ , -1]       
round(result.mat, 2) #Where 2 = however many sig digits you want.            

Questa non è una soluzione terribilmente solida: i valori dei nomi non univoci lo spezzerebbero, credo, come altre colonne non numeriche. Ma per produrre una tabella come il tuo esempio, fa il trucco.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top