2.4. Tablas de Resultados

En secciones anteriores, los resultados aparecen tabulados en un formato básico, poco apropiados para una publicación final. En esta sección estaremos utilizando paquetes que permiten la construcción de tablas con más flexibilidad y resultados más elegantes.

Hay al menos una docena de paquetes especializados para crear tablas; estaremos trabajando con dos de ellos: kableExtra y gt. A continuación otros más:

2.4.1. Tablas de Resultados usando kableExtra

Al finalizar esta sección podrás construir tablas de resultados en diversos formatos, usando el paquete kableExtra

El paquete kableExtra provee diversos formatos de tablas y funciones para modificarlas. A continuación, tres formatos diferentes con los mismos datos.

library(kableExtra)
covidPR <- read.csv("data/covid-sex.csv")
# formato básico
kbl(covidPR, caption = "Table 1. CoviD-19 deaths by sex and age groups.  Data up to May 31, 2021")
Table 1. CoviD-19 deaths by sex and age groups. Data up to May 31, 2021
date age All.Sexes Female Male
2020-01-31 All Ages 0 0 0
2020-02-29 All Ages 0 0 0
2020-03-31 All Ages 21 10 11
2020-04-30 All Ages 78 31 47
2020-05-31 All Ages 35 15 20
2020-06-30 All Ages 16 NA 13
2020-07-31 All Ages 91 27 64
2020-08-31 All Ages 197 84 113
2020-09-30 All Ages 233 94 139
2020-10-31 All Ages 173 79 94
2020-11-30 All Ages 342 144 198
2020-12-31 All Ages 436 179 257
2021-01-31 All Ages 244 121 123
2021-02-28 All Ages 131 62 69
2021-03-31 All Ages 68 37 31
2021-04-30 All Ages 195 84 111
2021-05-31 All Ages 170 73 97
2021-06-12 All Ages NA 0 NA
# formato kable_classic
kbl(covidPR, caption = "Table 1. CoviD-19 deaths by sex and age groups.  Data up to May 31, 2021") %>%
  kable_classic("striped", full_width = F) %>%
  add_header_above(c("", "", "Sex" = 3))
Table 1. CoviD-19 deaths by sex and age groups. Data up to May 31, 2021
Sex
date age All.Sexes Female Male
2020-01-31 All Ages 0 0 0
2020-02-29 All Ages 0 0 0
2020-03-31 All Ages 21 10 11
2020-04-30 All Ages 78 31 47
2020-05-31 All Ages 35 15 20
2020-06-30 All Ages 16 NA 13
2020-07-31 All Ages 91 27 64
2020-08-31 All Ages 197 84 113
2020-09-30 All Ages 233 94 139
2020-10-31 All Ages 173 79 94
2020-11-30 All Ages 342 144 198
2020-12-31 All Ages 436 179 257
2021-01-31 All Ages 244 121 123
2021-02-28 All Ages 131 62 69
2021-03-31 All Ages 68 37 31
2021-04-30 All Ages 195 84 111
2021-05-31 All Ages 170 73 97
2021-06-12 All Ages NA 0 NA
# formato kable_styling
kbl(covidPR, caption = "Table 1. CoviD-19 deaths by sex and age groups.  Data up to May 31, 2021") %>%
  kable_styling("striped", full_width = F) %>%
  add_header_above(c("", "", "Sex" = 3))
Table 1. CoviD-19 deaths by sex and age groups. Data up to May 31, 2021
Sex
date age All.Sexes Female Male
2020-01-31 All Ages 0 0 0
2020-02-29 All Ages 0 0 0
2020-03-31 All Ages 21 10 11
2020-04-30 All Ages 78 31 47
2020-05-31 All Ages 35 15 20
2020-06-30 All Ages 16 NA 13
2020-07-31 All Ages 91 27 64
2020-08-31 All Ages 197 84 113
2020-09-30 All Ages 233 94 139
2020-10-31 All Ages 173 79 94
2020-11-30 All Ages 342 144 198
2020-12-31 All Ages 436 179 257
2021-01-31 All Ages 244 121 123
2021-02-28 All Ages 131 62 69
2021-03-31 All Ages 68 37 31
2021-04-30 All Ages 195 84 111
2021-05-31 All Ages 170 73 97
2021-06-12 All Ages NA 0 NA

Cuando una tabla requiere más ajustes y modificaciones, kableExtra puede resultar un poco confuso para trabajar.

# leer los datos de archivo externo
ca_ratas <- read.csv("data/calcio-ratas.csv")
# activar paquete doBy para aplicar función por grupos
library(doBy)
descriptivas <- summaryBy(caplasma ~ list(hormona,sexo), 
                          data = ca_ratas,
                          FUN = function(x) {
                            c(media = mean(x), 
                              var = var(x), 
                              de = sd(x), 
                              es = sd(x)/sqrt(length(x)), 
                              CV = (sd(x)/mean(x))*100) })
# resultados sin formato
descriptivas
##   hormona   sexo caplasma.media caplasma.var caplasma.de caplasma.es
## 1      no hembra          14.88       17.107    4.136061    1.849703
## 2      no  macho          12.12       18.042    4.247588    1.899579
## 3      si hembra          32.52       21.817    4.670867    2.088875
## 4      si  macho          27.78       18.382    4.287423    1.917394
##   caplasma.CV
## 1    27.79611
## 2    35.04610
## 3    14.36306
## 4    15.43349
# creación de tabla con kableExtra
kbl(descriptivas, caption = "Table 2. Niveles de calcio plasmático en ratas hembras y machos tratadas con estrógeno o no. n = 5", 
    col.names = c("Hormona", "Sexo", "Media", "Varianza", "Desv. Estándar", "Error Estándar", "CV %"),
    digits = c(2,2,2,2,2)) %>%
  kable_classic(full_width = T) %>%
  add_header_above(c("Tratamientos" = 2, "Estadísticos Ca-plasma, mg/dl" = 5))
Table 2. Niveles de calcio plasmático en ratas hembras y machos tratadas con estrógeno o no. n = 5
Tratamientos
Estadísticos Ca-plasma, mg/dl
Hormona Sexo Media Varianza Desv. Estándar Error Estándar CV %
no hembra 14.88 17.11 4.14 1.85 27.80
no macho 12.12 18.04 4.25 1.90 35.05
si hembra 32.52 21.82 4.67 2.09 14.36
si macho 27.78 18.38 4.29 1.92 15.43



2.4.2. Tablas de Resultados usando gt

Al finalizar esta sección podrás construir tablas de resultados en diversos formatos, usando el paquete gt

Este paquete provee las funcionalidades de kableExtra, pero se aplican de una manera más organizada.

library(gt)
gt(descriptivas) %>%
  tab_header(
    title = "Table 2. Niveles de calcio plasmático en ratas hembra y macho tratadas con estrógeno o no",
    subtitle = "Cálculos mediante función en doBy, n = 5"
  ) %>%
  cols_label(
    hormona = html("Hormona"),
    sexo = html("Sexo"),
    caplasma.media = html("Media"),
    caplasma.var = html("Varianza"),
    caplasma.de = html("Desv. Estándar"),
    caplasma.es = html("Error Estándar"),
    caplasma.CV = html("Coef. Var. %")
  ) %>%
  tab_spanner(
    label = "Tratamientos",
    columns = vars(hormona, sexo)
  ) %>%
  tab_spanner(
    label = "Estadísticos",
    columns = vars(caplasma.media, caplasma.var, caplasma.de, caplasma.es, caplasma.CV)
  ) %>%
  fmt_number(
    columns = vars(caplasma.media, caplasma.var, caplasma.de, caplasma.es, caplasma.CV),
    decimals = 2
  )
## Warning: `columns = vars(...)` has been deprecated in gt 0.3.0:
## * please use `columns = c(...)` instead

## Warning: `columns = vars(...)` has been deprecated in gt 0.3.0:
## * please use `columns = c(...)` instead

## Warning: `columns = vars(...)` has been deprecated in gt 0.3.0:
## * please use `columns = c(...)` instead

## Warning: `columns = vars(...)` has been deprecated in gt 0.3.0:
## * please use `columns = c(...)` instead
Table 2. Niveles de calcio plasmático en ratas hembra y macho tratadas con estrógeno o no
Cálculos mediante función en doBy, n = 5
Tratamientos Estadísticos
Hormona Sexo Media Varianza Desv. Estándar Error Estándar Coef. Var. %
no hembra 14.88 17.11 4.14 1.85 27.80
no macho 12.12 18.04 4.25 1.90 35.05
si hembra 32.52 21.82 4.67 2.09 14.36
si macho 27.78 18.38 4.29 1.92 15.43