install.packages("gt") #- solo hay que instalarlo una vez
library(gt)Módulo práctico de ITA
(Grupo M)
Ya sabemos hacer gráficos. Pero muchas veces los resultados se presentan mejor en una tabla. Vamos a hacer tablas sencillas, pero chulas, con el paquete gt. Y al final las llevaremos a Word o a Excel.
gt::gt(aa). Ahora vamos a ver cómo hacer esas tablas más bonitasel paquete gt
gt (grammar of tables) es a las tablas lo que ggplot2 a los gráficos: la tabla se construye por partes, añadiendo funciones con %>%gt()Como siempre, primero preparamos los datos. Queremos una tabla con algunos datos de cada continente en 2007. ¿Te acuerdas de group_by() + summarise()?
Hacer una tabla básica es muy fácil: basta con gt()
df_tabla %>%
gt() %>%
tab_header(title = "Los continentes en 2007",
subtitle = "Datos de gapminder") %>%
cols_label(continent = "Continente",
n_paises = "Nº de países",
media_lifeExp = "Esperanza de vida",
media_gdpPercap = "Renta per cápita",
pob_millones = "Población (millones)") %>%
fmt_number(columns = c(media_lifeExp, media_gdpPercap,
pob_millones),
decimals = 1,
sep_mark = ".", dec_mark = ",") %>%df_tabla %>%
gt() %>%
tab_header(title = "Los continentes en 2007",
subtitle = "Datos de gapminder") %>%
cols_label(continent = "Continente",
n_paises = "Nº de países",
media_lifeExp = "Esperanza de vida",
media_gdpPercap = "Renta per cápita",
pob_millones = "Población (millones)") %>%
fmt_number(columns = c(media_lifeExp, media_gdpPercap,
pob_millones),
decimals = 1,
sep_mark = ".", dec_mark = ",") %>%
tab_source_note("Fuente: gapminder")#> # A tibble: 5 × 5
#> continent n_paises media_lifeExp media_gdpPercap pob_millones
#> <fct> <int> <dbl> <dbl> <dbl>
#> 1 Africa 52 54.8 3089. 930.
#> 2 Americas 25 73.6 11003. 899.
#> 3 Asia 33 70.7 12473. 3812.
#> 4 Europe 30 77.6 25054. 586.
#> 5 Oceania 2 80.7 29810. 24.5
| continent | n_paises | media_lifeExp | media_gdpPercap | pob_millones |
|---|---|---|---|---|
| Africa | 52 | 54.80604 | 3089.033 | 929.53969 |
| Americas | 25 | 73.60812 | 11003.032 | 898.87118 |
| Asia | 33 | 70.72848 | 12473.027 | 3811.95383 |
| Europe | 30 | 77.64860 | 25054.482 | 586.09853 |
| Oceania | 2 | 80.71950 | 29810.188 | 24.54995 |
| Los continentes en 2007 | ||||
| Datos de gapminder | ||||
| continent | n_paises | media_lifeExp | media_gdpPercap | pob_millones |
|---|---|---|---|---|
| Africa | 52 | 54.80604 | 3089.033 | 929.53969 |
| Americas | 25 | 73.60812 | 11003.032 | 898.87118 |
| Asia | 33 | 70.72848 | 12473.027 | 3811.95383 |
| Europe | 30 | 77.64860 | 25054.482 | 586.09853 |
| Oceania | 2 | 80.71950 | 29810.188 | 24.54995 |
| Los continentes en 2007 | ||||
| Datos de gapminder | ||||
| Continente | Nº de países | Esperanza de vida | Renta per cápita | Población (millones) |
|---|---|---|---|---|
| Africa | 52 | 54.80604 | 3089.033 | 929.53969 |
| Americas | 25 | 73.60812 | 11003.032 | 898.87118 |
| Asia | 33 | 70.72848 | 12473.027 | 3811.95383 |
| Europe | 30 | 77.64860 | 25054.482 | 586.09853 |
| Oceania | 2 | 80.71950 | 29810.188 | 24.54995 |
| Los continentes en 2007 | ||||
| Datos de gapminder | ||||
| Continente | Nº de países | Esperanza de vida | Renta per cápita | Población (millones) |
|---|---|---|---|---|
| Africa | 52 | 54,8 | 3.089,0 | 929,5 |
| Americas | 25 | 73,6 | 11.003,0 | 898,9 |
| Asia | 33 | 70,7 | 12.473,0 | 3.812,0 |
| Europe | 30 | 77,6 | 25.054,5 | 586,1 |
| Oceania | 2 | 80,7 | 29.810,2 | 24,5 |
| Los continentes en 2007 | ||||
| Datos de gapminder | ||||
| Continente | Nº de países | Esperanza de vida | Renta per cápita | Población (millones) |
|---|---|---|---|---|
| Africa | 52 | 54,8 | 3.089,0 | 929,5 |
| Americas | 25 | 73,6 | 11.003,0 | 898,9 |
| Asia | 33 | 70,7 | 12.473,0 | 3.812,0 |
| Europe | 30 | 77,6 | 25.054,5 | 586,1 |
| Oceania | 2 | 80,7 | 29.810,2 | 24,5 |
| Fuente: gapminder | ||||
| función | ¿qué hace? |
|---|---|
gt() |
convierte el data frame en una tabla |
tab_header() |
añade el título (y el subtítulo) |
cols_label() |
cambia los nombres que se ven en las columnas |
fmt_number() |
da formato a los números: decimales, separador de miles y de decimales |
tab_source_note() |
añade una nota debajo de la tabla; normalmente, la fuente de los datos |
Fíjate en los nombres: las funciones tab_*() añaden partes a la tabla, las fmt_*() dan formato a los valores y las cols_*() cambian las columnas
¡Ojo! cols_label() solo cambia lo que se ve. En el resto de funciones las columnas se siguen llamando igual: media_lifeExp, media_gdpPercap, pob_millones …
Con la tabla ya hecha, unos pocos retoques la mejoran mucho: un estilo, colores según el valor o destacar una fila
opt_stylize()Guardamos la tabla en un objeto, tt, y le añadimos un estilo. Hay 6 estilos (style = 1 … 6) y varios colores
| Los continentes en 2007 | ||||
| Datos de gapminder | ||||
| Continente | Nº de países | Esperanza de vida | Renta per cápita | Población (millones) |
|---|---|---|---|---|
| Africa | 52 | 54,8 | 3.089,0 | 929,5 |
| Americas | 25 | 73,6 | 11.003,0 | 898,9 |
| Asia | 33 | 70,7 | 12.473,0 | 3.812,0 |
| Europe | 30 | 77,6 | 25.054,5 | 586,1 |
| Oceania | 2 | 80,7 | 29.810,2 | 24,5 |
| Fuente: gapminder | ||||
| Los continentes en 2007 | ||||
| Datos de gapminder | ||||
| Continente | Nº de países | Esperanza de vida | Renta per cápita | Población (millones) |
|---|---|---|---|---|
| Africa | 52 | 54,8 | 3.089,0 | 929,5 |
| Americas | 25 | 73,6 | 11.003,0 | 898,9 |
| Asia | 33 | 70,7 | 12.473,0 | 3.812,0 |
| Europe | 30 | 77,6 | 25.054,5 | 586,1 |
| Oceania | 2 | 80,7 | 29.810,2 | 24,5 |
| Fuente: gapminder | ||||
| Los continentes en 2007 | ||||
| Datos de gapminder | ||||
| Continente | Nº de países | Esperanza de vida | Renta per cápita | Población (millones) |
|---|---|---|---|---|
| Africa | 52 | 54,8 | 3.089,0 | 929,5 |
| Americas | 25 | 73,6 | 11.003,0 | 898,9 |
| Asia | 33 | 70,7 | 12.473,0 | 3.812,0 |
| Europe | 30 | 77,6 | 25.054,5 | 586,1 |
| Oceania | 2 | 80,7 | 29.810,2 | 24,5 |
| Fuente: gapminder | ||||
gtExtrasEl paquete gtExtras tiene temas que cambian de golpe el aspecto de la tabla, imitando el de periódicos, webs o programas (hay que instalarlo antes: install.packages("gtExtras"))
| Los continentes en 2007 | ||||
| Datos de gapminder | ||||
| Continente | Nº de países | Esperanza de vida | Renta per cápita | Población (millones) |
|---|---|---|---|---|
| Africa | 52 | 54,8 | 3.089,0 | 929,5 |
| Americas | 25 | 73,6 | 11.003,0 | 898,9 |
| Asia | 33 | 70,7 | 12.473,0 | 3.812,0 |
| Europe | 30 | 77,6 | 25.054,5 | 586,1 |
| Oceania | 2 | 80,7 | 29.810,2 | 24,5 |
| Fuente: gapminder | ||||