Pregunta

Si tengo el siguiente marco de datos denominado resultado

> 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")

¿Cuál es la mejor manera de presentar bien estos datos? Idealmente, me gustaría un archivo de imagen que se pueda pegar en un informe, o posiblemente un archivo HTML para representar la tabla.

Puntos extra para establecer el número de cifras significativas.

¿Fue útil?

Solución

Yo usaría xtable . Normalmente 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")

Si quieres usarlo en un documento de Sweave, lo usarías así:

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

Otros consejos

Para el aspecto de la tabla, el paquete xtable viene Ten en cuenta que puede producir una salida LaTeX (que puedes usar a través de Sweave para informes profesionales), así como html.

Si combinas eso en Sweave con gráficos sofisticados (consulta otras preguntas para ver ejemplos de ggplot) ya casi llegas.

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()

No puedo comentar sobre hacer una tabla bonita, pero para establecer las cifras significativas, lo más fácil de hacer (para estos datos de muestra, tenga en cuenta) sería mover Nombre a nombres conocidos y redondear todo el conjunto.

#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.            

Esta no es una solución muy robusta: creo que los valores de nombres no únicos la romperían, al igual que otras columnas no numéricas. Pero para producir una tabla como tu ejemplo, hace el truco.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top