Tablas
Para incluir información en forma de tablas en R Markdown, tenemos que escribir la información en un formato especial, o utilizar alguna librería de visualización de datos.
Tablas pequeñas
Para las tablas pequeñas, podemos utilizar un formato especial para escribir pequeñas tablas en Markdown.
Por ejemplo, esta tabla:
| Juego | Compañia | Clasificacion | Precio (MXN) |
|---|---|---|---|
| Animal Crossing | Nintendo | E | 1600 |
| Persona 5 | Atlus | T | 1500 |
| Final Fantasy VII | Square Enix | T | 1500 |
| Fortnite | Epic Games | M | 0 |
Se dibuja con el siguiente código:
| Juego | Compañia | Clasificacion | Precio (MXN) |
|-------------------|-------------|---------------|--------------|
| Animal Crossing | Nintendo | E | 1600 |
| Persona 5 | Atlus | T | 1500 |
| Final Fantasy VII | Square Enix | T | 1500 |
| Fortnite | Epic Games | M | 0 |
Que en el editor se ve así:
El código anterior se puede generar en la página siguiente: https://www.tablesgenerator.com/markdown_tables, la cual nos proporciona una manera sencilla de generar tablas sencillas en Markdown, elemento a elemento.
Utilizando librerías de visualización.
En el caso en que no querramos crear nuestras tablas elemento a elemento, sino utilizar una base de datos, hay dos librerías recomendadas para realizar este fin:
{kable} - Recomendable para tablas pequeñas y medianas (que quepan bien en la pantalla).
{DT} - Recomendable para tablas grandes (que no quepan en la pantalla).
Las cuales nos generan tablas HTML para poder visualizar en nuestros documentos de RMarkdown.
Para ilustrar lo anterior, vamos a trabajar con la base de datos de Tweets de el Joker, la cual se puede descargar desde este enlace.
A continuación, vamos a generar la tabla de Kable.
| mpg | cyl | disp | hp | drat | wt | |
|---|---|---|---|---|---|---|
| Mazda RX4 | 21.0 | 6 | 160 | 110 | 3.90 | 2.620 |
| Mazda RX4 Wag | 21.0 | 6 | 160 | 110 | 3.90 | 2.875 |
| Datsun 710 | 22.8 | 4 | 108 | 93 | 3.85 | 2.320 |
| Hornet 4 Drive | 21.4 | 6 | 258 | 110 | 3.08 | 3.215 |
| Hornet Sportabout | 18.7 | 8 | 360 | 175 | 3.15 | 3.440 |
| mpg | cyl | disp | hp | drat | wt | |
|---|---|---|---|---|---|---|
| Mazda RX4 | 21.0 | 6 | 160 | 110 | 3.90 | 2.620 |
| Mazda RX4 Wag | 21.0 | 6 | 160 | 110 | 3.90 | 2.875 |
| Datsun 710 | 22.8 | 4 | 108 | 93 | 3.85 | 2.320 |
| Hornet 4 Drive | 21.4 | 6 | 258 | 110 | 3.08 | 3.215 |
| Hornet Sportabout | 18.7 | 8 | 360 | 175 | 3.15 | 3.440 |
# Tema Hover (se ilumina el renglón si le pasamos el cursor)
dt %>%
kbl() %>%
kable_paper("hover",
full_width = F)| mpg | cyl | disp | hp | drat | wt | |
|---|---|---|---|---|---|---|
| Mazda RX4 | 21.0 | 6 | 160 | 110 | 3.90 | 2.620 |
| Mazda RX4 Wag | 21.0 | 6 | 160 | 110 | 3.90 | 2.875 |
| Datsun 710 | 22.8 | 4 | 108 | 93 | 3.85 | 2.320 |
| Hornet 4 Drive | 21.4 | 6 | 258 | 110 | 3.08 | 3.215 |
| Hornet Sportabout | 18.7 | 8 | 360 | 175 | 3.15 | 3.440 |
# Estilo documento de Latex para PDF.
dt %>%
kbl(caption = "Recreating booktabs style table") %>%
kable_classic(full_width = F, html_font = "Cambria")| mpg | cyl | disp | hp | drat | wt | |
|---|---|---|---|---|---|---|
| Mazda RX4 | 21.0 | 6 | 160 | 110 | 3.90 | 2.620 |
| Mazda RX4 Wag | 21.0 | 6 | 160 | 110 | 3.90 | 2.875 |
| Datsun 710 | 22.8 | 4 | 108 | 93 | 3.85 | 2.320 |
| Hornet 4 Drive | 21.4 | 6 | 258 | 110 | 3.08 | 3.215 |
| Hornet Sportabout | 18.7 | 8 | 360 | 175 | 3.15 | 3.440 |
| mpg | cyl | disp | hp | drat | wt | |
|---|---|---|---|---|---|---|
| Mazda RX4 | 21.0 | 6 | 160 | 110 | 3.90 | 2.620 |
| Mazda RX4 Wag | 21.0 | 6 | 160 | 110 | 3.90 | 2.875 |
| Datsun 710 | 22.8 | 4 | 108 | 93 | 3.85 | 2.320 |
| Hornet 4 Drive | 21.4 | 6 | 258 | 110 | 3.08 | 3.215 |
| Hornet Sportabout | 18.7 | 8 | 360 | 175 | 3.15 | 3.440 |
| mpg | cyl | disp | hp | drat | wt | |
|---|---|---|---|---|---|---|
| Mazda RX4 | 21.0 | 6 | 160 | 110 | 3.90 | 2.620 |
| Mazda RX4 Wag | 21.0 | 6 | 160 | 110 | 3.90 | 2.875 |
| Datsun 710 | 22.8 | 4 | 108 | 93 | 3.85 | 2.320 |
| Hornet 4 Drive | 21.4 | 6 | 258 | 110 | 3.08 | 3.215 |
| Hornet Sportabout | 18.7 | 8 | 360 | 175 | 3.15 | 3.440 |
Como podemos ver, lo que hay que hacer es:
Poner el nombre del objeto que guarda tu base de datos.
Escribir el código que genera tu tabla (lo cual puedes copiar y pegar).
Y ya. Para ver más tablas puedes visitar su documentación, en el siguiente enlace.
Tablas DT.
Las tablas de DT son más aptas para tablas grandes. En el siguiente ejemplo vamos a utilizar la base de datos de Tweets de la película de The Joker para ver como puede funcionar la librería.
## Parsed with column specification:
## cols(
## value = col_character(),
## nombre = col_character(),
## usuario = col_character(),
## fecha = col_character(),
## retweets = col_double(),
## like = col_double(),
## replies = col_double(),
## texto = col_character(),
## hashtags = col_character(),
## ctasMencionadas = col_character(),
## nombres_propios = col_character(),
## fecha2 = col_date(format = "")
## )
## Rows: 1,028
## Columns: 12
## $ value <chr> "The Trend @thetrend___ 19m 19 minutes ago More…
## $ nombre <chr> "The Trend", "Amir Alonso Pinardel", "Jaime", "A…
## $ usuario <chr> "@thetrend___", "@amiralonsopinar", "@blackjim7"…
## $ fecha <chr> "2019-10-05", "2019-10-05", "2019-10-05", "2019-…
## $ retweets <dbl> 3, NA, NA, 1, NA, NA, 1, NA, NA, NA, NA, NA, NA,…
## $ like <dbl> 6, 1, 2, NA, NA, 1, 1, NA, 1, NA, NA, 1, NA, 2, …
## $ replies <dbl> NA, 1, NA, NA, NA, NA, 1, NA, 1, NA, NA, NA, NA,…
## $ texto <chr> "\"Solía pensar que mi vida era una tragedia, pe…
## $ hashtags <chr> "#Joker, #Guasón, #JokerMovie", "#Joker", "#Joke…
## $ ctasMencionadas <chr> NA, "@jokermovie, @comicsarg", NA, "@AHSFX, @jok…
## $ nombres_propios <chr> "Solía, Joaquin, Phoenix, Joker, Guasón, JokerMo…
## $ fecha2 <date> 2019-10-05, 2019-10-05, 2019-10-05, 2019-10-05,…
# En español
DT::datatable(joker,
options = list(
pageLength = 5,
language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
)
)# Tabla completa
DT::datatable(joker,
extensions = 'FixedColumns',
rownames= FALSE,
filter = 'top',
options = list(
pageLength = 5,
language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json'),
autoWidth = TRUE,
columnDefs =
list(list(width = '300px', targets = c(0,7))),
scrollX = TRUE,
escape = T)
)Para checar mayores referencias, visitar la página de documentación, disponible en este enlace.