Pergunta

Se eu tiver a seguinte trama de dados chamado 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")

O que é a melhor maneira de apresentar esses dados bem? Idealmente, eu gostaria de um arquivo de imagem que pode ser colado em um relatório, ou possivelmente um arquivo HTML para representar a mesa?

Pontos extras para definir número de algarismos significativos.

Foi útil?

Solução

Gostaria de usar xtable . Eu costumo usá-lo com Sweave.

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

Se você quiser usá-lo em um documento Sweave, você iria utilizá-lo assim:

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

Outras dicas

Para o aspecto tabela, o xtable pacote vem à mente, pois ele pode produzir saída LaTeX (que você pode usar via Sweave para relatórios profissionais), bem como html.

Se você combinar isso em Sweave com gráficos extravagantes (veja outras perguntas para exemplos ggplot) você está quase lá.

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

Não é possível comentário sobre como fazer uma tabela bonita, mas para definir os algarismos significativos, a coisa mais fácil de fazer (para estes dados de amostra, você mente) seria mover nome para rownames e rodada a coisa toda.

#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 não é uma solução extremamente robusta - valores Nome não-únicos iria quebrá-lo, eu acho que, como faria outras colunas não numéricos. Mas para produzir uma tabela como o seu exemplo, ele faz o truque.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top