Fecha de la ultima revisión

## [1] "2024-04-15"

test

library(ggplot2)
library(tidyverse)
library(ggversa)
library(gt)
library(gridExtra)

En este documento estaremos evaluando una serie de alternativas y paquetes para preparar tablas.

Tablas con Markdown

El primer ejemplo usa el sistema de markdown para preparar tablas


Tablas sencillas y R

Las tablas sencillas se usa cuando no hay mucha información y no estamos importando los datos externo o de un objeto de R.

  • “|”, para separar columnas
  • “:”, para indentificar si el texto o números estan pegado a la derecha, izquierda y centrado
  • “|—–|”, para separar el nombre de las columnas de la información de la tabla

A ver, mire la Tabla a y la Tabla b. ¿Encuentra los errores? Vea que la Tabla a muestra los valores con demasiadas cifras significativas, justificaciones ilógicas, formato inconsistente y no especifica las unidades de los valores. Vemos en la Tabla b que ahora las cifras significativas aparecen de forma consistente y en el mismo formato (2da y 3ra columnas), todos los números están justificados a la derecha y las unidades de cm se especifican (3ra columna).

En conclusión, no solo la Tabla b se ve más presentable, si no que también corrige los problemas, de ahí la importancia de presentar datos tabulados de forma que facilite su comunicación a la audiencia.


Tabla a. Errores de formato, justificación y escala

Genero Tamaño de muestra El largo de la hoja valor de p
Mujeres 27273 11.03 0.000000001
Hombres 169019 13.5 0.098979676
Especie 1.087^6 14.5 .0300001

Tabla b. Errores anteriores corregidos

Tamaño de muestra El largo de la hoja (cm) valor de p
Mujeres 27273 11.0 <0.001
Hombres 169019 13.5 0.099
Especie 1087669 14.5 0.030

Para facilitar la producción de una tabla siempre puede usar este enlace

https://www.tablesgenerator.com/markdown_tables


  1. Ejercicio

Prepara una tabla de la lista de tu familia, nombre de tu madre, abuelas y cuantos hijos tienen. Los nombres deberían esta justificado a la izquierda y la cantidad de hijos a la derecha, en una tercera columna pon el municipio donde nacio esa persona.


tibble y tribble

Un tibble es una tabla que es muy similar a un data frame, con algunas diferencias que le hace más fácil encontrar errores y imprimir esas tablas. Aqui vemos un data frame que fue convertida en tibble, a evaluar la tabla no se ve ninguna diferencia. Vea este enlace para más información https://r4ds.had.co.nz/tibbles.html

El archivo esta un formato “data frame” y “A” esta en un formato tibble. Nota que no se ve diferencias entre los dos a simple vista. Pero es importante que sepa detras en el codigo del formato, hay codificación que puede facilitar o no un analisis en cada uno de las opciones.

library(ggversa)
library(tibble)
Anolis
## # A tibble: 503 × 15
##    STUDY      Survey_Site     LOCATION TIME  DATE  SEASON SPECIES SEX_AGE HEIGHT
##    <chr>      <chr>           <chr>    <tim> <chr> <chr>  <chr>   <chr>    <dbl>
##  1 Mark/recap North Tower     El Verde 10:46 3/13… dry    Anolis… Female     0  
##  2 Mark/recap Woods walkway … El Verde 10:15 2/20… dry    Anolis… Juvenil    0  
##  3 Mark/recap Woods walkway … El Verde 11:15 2/21… dry    Anolis… Male       0  
##  4 Mark/recap North Tower     El Verde 11:06 3/16… dry    Anolis… Juvenil    0.3
##  5 Mark/recap North Tower     El Verde 12:31 3/11… dry    Anolis… Male       0.3
##  6 Mark/recap North Tower     El Verde 01:00 3/9/… dry    Anolis… Female     0.4
##  7 Mark/recap Woods walkway … El Verde 10:22 2/22… dry    Anolis… Female     0.4
##  8 Mark/recap North Tower     El Verde 11:55 3/12… dry    Anolis… Juvenil    0.4
##  9 Mark/recap Woods walkway … El Verde 10:15 2/20… dry    Anolis… Juvenil    0.4
## 10 Mark/recap North Tower     El Verde 12:31 3/11… dry    Anolis… Female     0.5
## # ℹ 493 more rows
## # ℹ 6 more variables: DISTANCE_FROM_CENTERLINE <dbl>, PERCH_SUBSTRATE <chr>,
## #   PERCH_DIAMETER <int>, WEIGHT <dbl>, SVL <dbl>, TAIL <dbl>
A=as_tibble(Anolis)
A
## # A tibble: 503 × 15
##    STUDY      Survey_Site     LOCATION TIME  DATE  SEASON SPECIES SEX_AGE HEIGHT
##    <chr>      <chr>           <chr>    <tim> <chr> <chr>  <chr>   <chr>    <dbl>
##  1 Mark/recap North Tower     El Verde 10:46 3/13… dry    Anolis… Female     0  
##  2 Mark/recap Woods walkway … El Verde 10:15 2/20… dry    Anolis… Juvenil    0  
##  3 Mark/recap Woods walkway … El Verde 11:15 2/21… dry    Anolis… Male       0  
##  4 Mark/recap North Tower     El Verde 11:06 3/16… dry    Anolis… Juvenil    0.3
##  5 Mark/recap North Tower     El Verde 12:31 3/11… dry    Anolis… Male       0.3
##  6 Mark/recap North Tower     El Verde 01:00 3/9/… dry    Anolis… Female     0.4
##  7 Mark/recap Woods walkway … El Verde 10:22 2/22… dry    Anolis… Female     0.4
##  8 Mark/recap North Tower     El Verde 11:55 3/12… dry    Anolis… Juvenil    0.4
##  9 Mark/recap Woods walkway … El Verde 10:15 2/20… dry    Anolis… Juvenil    0.4
## 10 Mark/recap North Tower     El Verde 12:31 3/11… dry    Anolis… Female     0.5
## # ℹ 493 more rows
## # ℹ 6 more variables: DISTANCE_FROM_CENTERLINE <dbl>, PERCH_SUBSTRATE <chr>,
## #   PERCH_DIAMETER <int>, WEIGHT <dbl>, SVL <dbl>, TAIL <dbl>

Crear un tibble en un documento .Rmd

tribble

Constuir una tabla con tribble

Tabla=tribble(~"Nombre Cientifico de las Especies", ~"Nombre Comun", ~N,
        "Especie_1", "Angelito", 10,
        "Especie_2", "...", 300,
        "Prestoea montana","Palma de Sierra", 1,
        "....","...", NA
        )
Tabla
## # A tibble: 4 × 3
##   `Nombre Cientifico de las Especies` `Nombre Comun`      N
##   <chr>                               <chr>           <dbl>
## 1 Especie_1                           Angelito           10
## 2 Especie_2                           ...               300
## 3 Prestoea montana                    Palma de Sierra     1
## 4 ....                                ...                NA

El paquete gt

El paquete gt es the “Grammar of tables”, y la función principal es “gt”. Si usamos la tabla que creamos anteriomente se puede mejor la aparencia de la tabla

library(gt)
head(A)
## # A tibble: 6 × 15
##   STUDY      Survey_Site      LOCATION TIME  DATE  SEASON SPECIES SEX_AGE HEIGHT
##   <chr>      <chr>            <chr>    <tim> <chr> <chr>  <chr>   <chr>    <dbl>
## 1 Mark/recap North Tower      El Verde 10:46 3/13… dry    Anolis… Female     0  
## 2 Mark/recap Woods walkway t… El Verde 10:15 2/20… dry    Anolis… Juvenil    0  
## 3 Mark/recap Woods walkway t… El Verde 11:15 2/21… dry    Anolis… Male       0  
## 4 Mark/recap North Tower      El Verde 11:06 3/16… dry    Anolis… Juvenil    0.3
## 5 Mark/recap North Tower      El Verde 12:31 3/11… dry    Anolis… Male       0.3
## 6 Mark/recap North Tower      El Verde 01:00 3/9/… dry    Anolis… Female     0.4
## # ℹ 6 more variables: DISTANCE_FROM_CENTERLINE <dbl>, PERCH_SUBSTRATE <chr>,
## #   PERCH_DIAMETER <int>, WEIGHT <dbl>, SVL <dbl>, TAIL <dbl>
gt(head(A))
STUDY Survey_Site LOCATION TIME DATE SEASON SPECIES SEX_AGE HEIGHT DISTANCE_FROM_CENTERLINE PERCH_SUBSTRATE PERCH_DIAMETER WEIGHT SVL TAIL
Mark/recap North Tower El Verde 10:46:00 3/13/92 0:00 dry Anolis stratulus Female 0.0 2.7 ground 6 NA NA NA
Mark/recap Woods walkway tower El Verde 10:15:00 2/20/89 0:00 dry Anolis stratulus Juvenil 0.0 2.0 NA NA NA 29 NA
Mark/recap Woods walkway tower El Verde 11:15:00 2/21/89 0:00 dry Anolis stratulus Male 0.0 1.4 on root at base 0 NA NA NA
Mark/recap North Tower El Verde 11:06:00 3/16/92 0:00 dry Anolis stratulus Juvenil 0.3 1.0 tower 30 7.0 26 3
Mark/recap North Tower El Verde 12:31:00 3/11/92 0:00 dry Anolis stratulus Male 0.3 0.9 tower 5 2.4 45 71
Mark/recap North Tower El Verde 01:00:00 3/9/92 0:00 dry Anolis stratulus Female 0.4 0.9 tower 5 1.6 37 58

Vea este enlace para información de las funciones de gt https://gt.rstudio.com y este https://themockup.blog/static/gt-cookbook.html


Añadiendo titulo y referencia a una tabla gt

A %>% 
  dplyr::select(STUDY, Survey_Site, TIME, DATE, SEASON, SEX_AGE, SVL) %>% 
  head() %>% 
  gt() %>% 
  tab_header(title = "Datos sobre la presencia y tamaño de Anolis en la estación El Verde, PR",
             subtitle = "Datos recolectado por Douglas Reagan" )
Datos sobre la presencia y tamaño de Anolis en la estación El Verde, PR
Datos recolectado por Douglas Reagan
STUDY Survey_Site TIME DATE SEASON SEX_AGE SVL
Mark/recap North Tower 10:46:00 3/13/92 0:00 dry Female NA
Mark/recap Woods walkway tower 10:15:00 2/20/89 0:00 dry Juvenil 29
Mark/recap Woods walkway tower 11:15:00 2/21/89 0:00 dry Male NA
Mark/recap North Tower 11:06:00 3/16/92 0:00 dry Juvenil 26
Mark/recap North Tower 12:31:00 3/11/92 0:00 dry Male 45
Mark/recap North Tower 01:00:00 3/9/92 0:00 dry Female 37

Añadiendo itálico a algunas palabras

A %>% 
  dplyr::select(STUDY, Survey_Site, TIME, DATE, SEASON, SEX_AGE, SVL) %>% 
  head() %>% 
  gt() %>% 
  tab_header(title = md("Datos sobre la presencia y tamanõ de *Anolis* en la estación **El Verde**, PR"),
             subtitle = "Datos recolectado por Douglas Reagan" )
Datos sobre la presencia y tamanõ de Anolis en la estación El Verde, PR
Datos recolectado por Douglas Reagan
STUDY Survey_Site TIME DATE SEASON SEX_AGE SVL
Mark/recap North Tower 10:46:00 3/13/92 0:00 dry Female NA
Mark/recap Woods walkway tower 10:15:00 2/20/89 0:00 dry Juvenil 29
Mark/recap Woods walkway tower 11:15:00 2/21/89 0:00 dry Male NA
Mark/recap North Tower 11:06:00 3/16/92 0:00 dry Juvenil 26
Mark/recap North Tower 12:31:00 3/11/92 0:00 dry Male 45
Mark/recap North Tower 01:00:00 3/9/92 0:00 dry Female 37

Añadiendo una referencia

https://luq.lter.network/data/luqmetadata1

A %>% 
  select(STUDY, Survey_Site, TIME, DATE, SEASON, SEX_AGE, SVL) %>% 
  head() %>% 
  gt() %>% 
  tab_header(title = md("Datos sobre la presencia y tamanõ de *Anolis* en la estación El Verde, PR"),
             subtitle = "Datos recolectado por Douglas Reagan" ) %>% 
  tab_source_note(
    source_note = "https://luq.lter.network/data/luqmetadata1")
Datos sobre la presencia y tamanõ de Anolis en la estación El Verde, PR
Datos recolectado por Douglas Reagan
STUDY Survey_Site TIME DATE SEASON SEX_AGE SVL
Mark/recap North Tower 10:46:00 3/13/92 0:00 dry Female NA
Mark/recap Woods walkway tower 10:15:00 2/20/89 0:00 dry Juvenil 29
Mark/recap Woods walkway tower 11:15:00 2/21/89 0:00 dry Male NA
Mark/recap North Tower 11:06:00 3/16/92 0:00 dry Juvenil 26
Mark/recap North Tower 12:31:00 3/11/92 0:00 dry Male 45
Mark/recap North Tower 01:00:00 3/9/92 0:00 dry Female 37
https://luq.lter.network/data/luqmetadata1

Identificando una celda especifica con un footnote

AA=A %>% 
  select(STUDY, Survey_Site, TIME, DATE, SEASON, SEX_AGE, SVL) %>% 
  head() %>% 
  gt() %>% 
  tab_header(title = md("Datos sobre la presencia y tamanõ de *Anolis* en la estación El Verde, PR"),
             subtitle = "Datos recolectado por Douglas Reagan" ) %>% 
  tab_source_note(
    source_note = "https://luq.lter.network/data/luqmetadata1") %>% 
  tab_footnote(
    footnote = "Podria haber sido confundido con un extraterrestre",
    locations = cells_body(columns=SEX_AGE, rows = 2)
  ) %>% 
    tab_footnote(
    footnote = "Podria tener un texto interesante ",
    locations = cells_body(columns=SEX_AGE, rows = 3)
  )%>% 
    tab_footnote(
    footnote = "yo, no se la diferencia entre machos y hembras",
    locations = cells_body(columns=SEX_AGE, rows = 3)
  )
AA
Datos sobre la presencia y tamanõ de Anolis en la estación El Verde, PR
Datos recolectado por Douglas Reagan
STUDY Survey_Site TIME DATE SEASON SEX_AGE SVL
Mark/recap North Tower 10:46:00 3/13/92 0:00 dry Female NA
Mark/recap Woods walkway tower 10:15:00 2/20/89 0:00 dry Juvenil1 29
Mark/recap Woods walkway tower 11:15:00 2/21/89 0:00 dry Male2,3 NA
Mark/recap North Tower 11:06:00 3/16/92 0:00 dry Juvenil 26
Mark/recap North Tower 12:31:00 3/11/92 0:00 dry Male 45
Mark/recap North Tower 01:00:00 3/9/92 0:00 dry Female 37
https://luq.lter.network/data/luqmetadata1
1 Podria haber sido confundido con un extraterrestre
2 Podria tener un texto interesante
3 yo, no se la diferencia entre machos y hembras

AA %>% 
  tab_style(
    style = list(cell_fill(color = "Orange")),
    locations = cells_body(columns = STUDY)
  )%>% 
  tab_style(
    style = list(cell_fill(color = "Red")),
    locations = cells_body(columns = DATE)
  )
Datos sobre la presencia y tamanõ de Anolis en la estación El Verde, PR
Datos recolectado por Douglas Reagan
STUDY Survey_Site TIME DATE SEASON SEX_AGE SVL
Mark/recap North Tower 10:46:00 3/13/92 0:00 dry Female NA
Mark/recap Woods walkway tower 10:15:00 2/20/89 0:00 dry Juvenil1 29
Mark/recap Woods walkway tower 11:15:00 2/21/89 0:00 dry Male2,3 NA
Mark/recap North Tower 11:06:00 3/16/92 0:00 dry Juvenil 26
Mark/recap North Tower 12:31:00 3/11/92 0:00 dry Male 45
Mark/recap North Tower 01:00:00 3/9/92 0:00 dry Female 37
https://luq.lter.network/data/luqmetadata1
1 Podria haber sido confundido con un extraterrestre
2 Podria tener un texto interesante
3 yo, no se la diferencia entre machos y hembras

AA %>% 
  tab_style(
    style = list(cell_fill(color = "Orange")),
    locations = cells_body(columns = STUDY, rows = 1)
  ) %>% 
  tab_style(
    style = list(cell_text(color = "Orange")),
    locations = cells_body(columns=SEX_AGE, rows = 3)
  )
Datos sobre la presencia y tamanõ de Anolis en la estación El Verde, PR
Datos recolectado por Douglas Reagan
STUDY Survey_Site TIME DATE SEASON SEX_AGE SVL
Mark/recap North Tower 10:46:00 3/13/92 0:00 dry Female NA
Mark/recap Woods walkway tower 10:15:00 2/20/89 0:00 dry Juvenil1 29
Mark/recap Woods walkway tower 11:15:00 2/21/89 0:00 dry Male2,3 NA
Mark/recap North Tower 11:06:00 3/16/92 0:00 dry Juvenil 26
Mark/recap North Tower 12:31:00 3/11/92 0:00 dry Male 45
Mark/recap North Tower 01:00:00 3/9/92 0:00 dry Female 37
https://luq.lter.network/data/luqmetadata1
1 Podria haber sido confundido con un extraterrestre
2 Podria tener un texto interesante
3 yo, no se la diferencia entre machos y hembras

AAA=AA %>% 
  tab_style(
    style = list(cell_fill(color = "Orange")),
    locations = cells_body(columns = STUDY)
  ) %>% 
  tab_style(
    style = list(cell_text(color = "Orange")),
    locations = cells_body(columns=SEX_AGE, rows = 3)
  ) %>% 
    tab_style(
    style = list(cell_text(style = "italic", weight = "bold")),
    locations = cells_body(columns=Survey_Site, rows = 1)
    )

AAA
Datos sobre la presencia y tamanõ de Anolis en la estación El Verde, PR
Datos recolectado por Douglas Reagan
STUDY Survey_Site TIME DATE SEASON SEX_AGE SVL
Mark/recap North Tower 10:46:00 3/13/92 0:00 dry Female NA
Mark/recap Woods walkway tower 10:15:00 2/20/89 0:00 dry Juvenil1 29
Mark/recap Woods walkway tower 11:15:00 2/21/89 0:00 dry Male2,3 NA
Mark/recap North Tower 11:06:00 3/16/92 0:00 dry Juvenil 26
Mark/recap North Tower 12:31:00 3/11/92 0:00 dry Male 45
Mark/recap North Tower 01:00:00 3/9/92 0:00 dry Female 37
https://luq.lter.network/data/luqmetadata1
1 Podria haber sido confundido con un extraterrestre
2 Podria tener un texto interesante
3 yo, no se la diferencia entre machos y hembras

Formateo condicional

Aqui usamos la condición de SVL sea debajo un tamaño o más grande y se le asigna un color correspondiente.

AAAA= AAA |> 
  tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = vars(SVL),
      rows = SVL < 38
    )
  ) |>  
  tab_style(
    style = cell_text(color = "blue", weight = "bold"),
    locations = cells_body(
      columns = vars(SVL),
      rows = SVL >= 38
    )
  )


AAAA
Datos sobre la presencia y tamanõ de Anolis en la estación El Verde, PR
Datos recolectado por Douglas Reagan
STUDY Survey_Site TIME DATE SEASON SEX_AGE SVL
Mark/recap North Tower 10:46:00 3/13/92 0:00 dry Female NA
Mark/recap Woods walkway tower 10:15:00 2/20/89 0:00 dry Juvenil1 29
Mark/recap Woods walkway tower 11:15:00 2/21/89 0:00 dry Male2,3 NA
Mark/recap North Tower 11:06:00 3/16/92 0:00 dry Juvenil 26
Mark/recap North Tower 12:31:00 3/11/92 0:00 dry Male 45
Mark/recap North Tower 01:00:00 3/9/92 0:00 dry Female 37
https://luq.lter.network/data/luqmetadata1
1 Podria haber sido confundido con un extraterrestre
2 Podria tener un texto interesante
3 yo, no se la diferencia entre machos y hembras

Cambiar los fonts de una columna especifica o de toda la tabla

Para aceso alos fonts de google vea este enlace

https://fonts.google.com

small_table=AAAA %>% 
  tab_style(
    style = cell_text(
      font = google_font("Indie Flower"), 
      weight = "bold",
      size = px(20)
      ),
    locations = list(
      cells_column_labels(everything())
  )) %>% 
   tab_style(
    style = cell_text(
    font = google_font("Redressed"), size = px(14)),
    locations = list(
      cells_body(columns = everything())
  )) %>% 
  tab_style(
    style = cell_text(
    font = google_font("Redressed"), size = px(14)),
    locations = list(cells_title(groups=c("subtitle"))
  ))


small_table
Datos sobre la presencia y tamanõ de Anolis en la estación El Verde, PR
Datos recolectado por Douglas Reagan
STUDY Survey_Site TIME DATE SEASON SEX_AGE SVL
Mark/recap North Tower 10:46:00 3/13/92 0:00 dry Female NA
Mark/recap Woods walkway tower 10:15:00 2/20/89 0:00 dry Juvenil1 29
Mark/recap Woods walkway tower 11:15:00 2/21/89 0:00 dry Male2,3 NA
Mark/recap North Tower 11:06:00 3/16/92 0:00 dry Juvenil 26
Mark/recap North Tower 12:31:00 3/11/92 0:00 dry Male 45
Mark/recap North Tower 01:00:00 3/9/92 0:00 dry Female 37
https://luq.lter.network/data/luqmetadata1
1 Podria haber sido confundido con un extraterrestre
2 Podria tener un texto interesante
3 yo, no se la diferencia entre machos y hembras
library(webshot2)
#gtsave(small_table, "gt_table_excercise.png")




flextable package

library(flextable)

Flexable website

https://ardata-fr.github.io/flextable-book/index.html

library(flextable)
ft <- flextable(airquality[ sample.int(10),])
ft <- add_header_row(ft,
  colwidths = c(4, 2),
  values = c("Air quality", "Time")
)
ft <- theme_vanilla(ft)
ft <- add_footer_lines(ft, "Daily air quality measurements in New York, May to September 1973.")
ft <- color(ft, part = "footer", color = "#666666")
ft <- set_caption(ft, caption = "New York Air Quality Measurements")
ft
New York Air Quality Measurements

Air quality

Time

Ozone

Solar.R

Wind

Temp

Month

Day

41

190

7.4

67

5

1

194

8.6

69

5

10

36

118

8.0

72

5

2

8

19

20.1

61

5

9

19

99

13.8

59

5

8

12

149

12.6

74

5

3

28

14.9

66

5

6

14.3

56

5

5

23

299

8.6

65

5

7

18

313

11.5

62

5

4

Daily air quality measurements in New York, May to September 1973.

#tf <- tempfile(fileext = ".docx")
#save_as_pptx("ft1" = ft, path = "/Users/raymondtremblay/Dropbox/GitHub_Dropbox_Drive/GitHub/Visualizacion_Datos/ft.pptx")

#save_as_docx("ft1" = ft, path = "/Users/raymondtremblay/Dropbox/GitHub_Dropbox_Drive/GitHub/Visualizacion_Datos/ft.docx")