Ir al contenido

En este artículo realizamos ejemplos de análisis que pueden elaborarse con el paquete covidmx. El propósito será generar el reporte que se presenta aquí:

Para ello lo primero que hacemos es cargar la libraría de covidmx así como algunas librerías auxiliares para apoyar las gráficas y el análisis de datos

library(covidmx)   # remotes::install_github("RodrigoZepeda/covidmx")
library(lubridate) # Funciones para semana epidemiológica
library(tidyverse) # Análisis de datos
library(cowplot)   # Juntar las gráficas con plot_grid
library(ggtext)    # Generar las imágenes
library(glue)      # Generar las imágenes
library(MetBrewer) # Paletas de colores 

Y descargamos los datos:

datos_covid <- descarga_datos_abiertos(show_warnings = FALSE)

Casos semanales y número efectivo de reproducción

Comenzamos con el primer panel para lo cual necesitamos correr dos funciones: la de casos y la del número efectivo de reproducción. Calculamos ambos seleccionando la entidad y sólo los confirmados:

datos_covid <- datos_covid |>
  #Calculamos los casos
  casos(entidades          = "CIUDAD DE MÉXICO",
        group_by_entidad   = FALSE,
        tipo_clasificacion = "Confirmados COVID") |>
  #Y calculamos el estima_rt
  estima_rt(entidades = "CIUDAD DE MÉXICO",
     min_date  = as.Date("2021/11/20", format = "%Y/%m/%d"),
     tipo_clasificacion = "Confirmados COVID",
     method = "parametric_si",        #Método de estimación del estima_rt
     config = EpiEstim::make_config(
       list(
       mean_si = 3.5, #Media de tiempo del intervalo serial
       std_si = 1.5   #Varianza de tiempo del intervalo serial
       )
    ))
## Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in
## dplyr 1.1.0.
##  Please use `reframe()` instead.
##  When switching from `summarise()` to `reframe()`, remember that `reframe()`
##   always returns an ungrouped data frame and adjust accordingly.
##  The deprecated feature was likely used in the covidmx package.
##   Please report the issue at <

Cada una de las bases de datos se encuentran dentro de datos_covid con diferente nombre:

names(datos_covid)
## [1] "dats"       "disconnect" "dict"       "casos"      "estima_rt"

Por otro lado descargamos los datos de variantes

variantes <- descarga_datos_variantes_GISAID("cdmx")

Generamos entonces una base única a partir del 2021/11/20 que contenga información de variantes y casos

#Limpiamos del estima_rt los últimas dos semanas porque se cae
datos_covid$estima_rt <- datos_covid$estima_rt |>
  dplyr::filter(FECHA_SINTOMAS <= today() - weeks(2))

#Filtramos las fechas para coincidir con el RT
datos_covid$casos <- datos_covid$casos |>
  dplyr::filter(FECHA_SINTOMAS >= as.Date("2021/11/20", format = "%Y/%m/%d")) 

#Asignamos semana epidemiológica y año para la coloración y colapsamos por semana
datos_covid$casos <- datos_covid$casos |>
  dplyr::mutate(SEMANA_EPI = lubridate::epiweek(FECHA_SINTOMAS)) |>
  dplyr::mutate(ANIO_EPI   = lubridate::epiyear(FECHA_SINTOMAS)) |>
  dplyr::group_by(SEMANA_EPI, ANIO_EPI) |>
  dplyr::summarise(n = sum(n), .groups = "keep")

#Unimos la información de variantes
datos_covid$casos <- datos_covid$casos |>
  #Renombramos pues la base de variantes ya trae una n
  dplyr::rename(casos_covid = n) |>
  #Juntamos la info de variantes
  dplyr::left_join(variantes, 
                   by = c("SEMANA_EPI" = "semana", "ANIO_EPI" = "ano")) |>
  #Truco para convertir semana epidemiológica en fecha
  dplyr::left_join(
    tibble::tibble(fecha = seq(lubridate::ymd("2021/11/20"), 
                               lubridate::today(), by = "1 week")) |>
      dplyr::mutate(SEMANA_EPI = lubridate::epiweek(fecha)) |>
      dplyr::mutate(ANIO_EPI = lubridate::epiyear(fecha)), 
    by = c("SEMANA_EPI", "ANIO_EPI")
  )
## Warning in dplyr::left_join(dplyr::rename(datos_covid$casos, casos_covid = n), : Each row in `x` is expected to match at most 1 row in `y`.
##  Row 1 of `x` matches multiple rows.
##  If multiple matches are expected, set `multiple = "all"` to silence this
##   warning.

Así se ve la base generada:

head(datos_covid$casos)
## # A tibble: 6 × 9
## # Groups:   SEMANA_EPI, ANIO_EPI [1]
##   SEMANA_EPI ANIO_EPI casos_c…¹ variant     n    freq Actualizacion       Fuente
##        <dbl>    <dbl>     <dbl> <chr>   <int>   <dbl> <dttm>              <chr> 
## 1          1     2022     77054 Omicro…     1 0.00202 2022-12-23 03:07:16 GISAI…
## 2          1     2022     77054 Omicro…     1 0.00202 2022-12-23 03:07:16 GISAI…
## 3          1     2022     77054 Omicro…     2 0.00403 2022-12-23 03:07:16 GISAI…
## 4          1     2022     77054 Omicro…     3 0.00605 2022-12-23 03:07:16 GISAI…
## 5          1     2022     77054 VOC De…    17 0.0343  2022-12-23 03:07:16 GISAI…
## 6          1     2022     77054 Omicro…   472 0.952   2022-12-23 03:07:16 GISAI…
## # … with 1 more variable: fecha <date>, and abbreviated variable name
## #   ¹​casos_covid

Hacemos la gráfica comenzando con unas barras con colores por variante

nvariants <- unique(datos_covid$casos$variant) |> length()
ggplot2::ggplot() +
  ggplot2::geom_col(
    ggplot2::aes(x = fecha, 
                 y = as.numeric(casos_covid)*freq, 
                 fill = variant), data = datos_covid$casos) +
  ggplot2::scale_fill_manual("Variante", 
                             values = MetBrewer::met.brewer("Cross", n = nvariants))

Sobreponemos el RT y agregamos formato

cdmx_rt <- ggplot() +
  geom_col(aes(x = as.Date(fecha), y = as.numeric(casos_covid)*freq, fill = variant), 
           data = datos_covid$casos) +
  #Se multiplica por 40,000 para andar cerca de la media de casos
  geom_line(aes(x = as.Date(FECHA_SINTOMAS), 40000*`Median(R)`), data = datos_covid$estima_rt,
            linetype = "solid", linewidth = 1) + 
  scale_fill_manual("Variante", values = met.brewer("Cross", n = nvariants)) +
  labs(
    x = "Fecha de inicio de síntomas",
    y = "Casos confirmados de COVID-19",
    title = "",
    caption = "**Fuente:** GISAID EpiCoV y Github: @RodrigoZepeda/VariantesCovid"
  ) +
  scale_y_continuous(labels = scales::label_comma(),  
                     sec.axis = sec_axis(~ . / 40000, 
                                         name = "Número efectivo de reproducción (RT)")) +
  theme_minimal() +
  theme(
    legend.position = "top",
    plot.caption    = element_markdown()
    ) +
  geom_hline(aes(yintercept = 40000), linetype = "dashed", color = "gray25") +
  coord_cartesian(xlim = c(min(datos_covid$casos$fecha), max(datos_covid$casos$fecha))) +
  scale_x_date(date_breaks = "1 month", date_labels = "%b-%Y")

cdmx_rt

Ocupación hospitalaria y hospitalizaciones

Por otro lado descargamos la información de ocupación hospitalaria de la RED IRAG.

#Descarga de datos por estado
ocupacion_estado <- descarga_datos_red_irag("Estatal")

#Descargamos las unidades médicas
ocupacion_UM     <- descarga_datos_red_irag("Unidad Médica")

Obtenemos entonces las unidades médicas con mayor ocupación en la fecha más reciente:

ocupacion_UM <- ocupacion_UM |> 
  dplyr::filter(Estado == "Ciudad de México") |>
  dplyr::filter(Fecha == max(Fecha))

Por otro lado juntamos las bases de ocupación y de casos hospitalizados por fecha de ingreso

#Obtenemos la ocupación por estado
ocupacion_cdmx <- ocupacion_estado |>
  dplyr::filter(Estado == "Ciudad de México") |>
  dplyr::mutate(`Hospitalizados (%)` = 
           dplyr::if_else(`Hospitalizados (%)` > 100 | `Hospitalizados (%)` < 0, 
                   NA_real_, `Hospitalizados (%)`))

#Y los casos hospitalizados por fecha de ingreso
datos_covid <- datos_covid |> casos(
  entidades        = "CIUDAD DE MÉXICO",
  group_by_entidad = FALSE,
  fecha_tipo       = "Ingreso",
  tipo_paciente    = "HOSPITALIZADO",
  list_name        = "hospitalizados"
)

#Pegamos en la misma base
datos_covid$hospitalizados <- datos_covid$hospitalizados |>
  dplyr::left_join(ocupacion_cdmx, by = c("FECHA_INGRESO" = "Fecha"))

Finalmente realizamos la gráfica

#Obtenemos el máximo de pacientes para el reescalamiento
m_pacientes <- max(datos_covid$hospitalizados$n, na.rm = T) |> as.numeric()

#Obtenemos los colores
colores     <- met.brewer("Cross")
  
#Reescalamos el porcentaje para que aparezca
plot_hospitalizados <- ggplot(datos_covid$hospitalizados) +
  geom_area(aes(x = as.Date(FECHA_INGRESO), y = `Hospitalizados (%)`/100*m_pacientes),
            fill = colores[8], alpha = 0.25) +
  geom_line(aes(x = as.Date(FECHA_INGRESO), y = as.double(n)), color = colores[1]) +
  theme_minimal() +
  coord_cartesian(xlim = c(ymd("2020/04/02"), today())) +
  scale_x_date(date_breaks = "3 months", date_labels = "%b-%Y", expand = c(0,0)) +
  labs(
    x = "", 
    y = "Hospitalizados",
    title = glue("<span style='color:{colores[1]}'>PACIENTES HOSPITALIZADOS</span> Y ",
                 "<span style='color:{colores[8]}'>% DE OCUPACIÓN</span>"),
    caption = glue("**Fuente:** _Github ", 
                   "@RodrigoZepeda/CapacidadHospitalariaMX_")
  ) +
  theme(
    axis.text.x  = element_text(angle = 90, hjust = 1),
    plot.title   = element_markdown(),
    plot.caption = element_markdown()
  ) +
  scale_y_continuous(labels = scales::label_comma(),  
                     sec.axis = sec_axis(~ . / m_pacientes, 
                                         labels  = scales::label_percent(),
                                         name    = "Ocupación de la Red IRAG (%)"))

plot_hospitalizados

Por otro lado graficamos la ocupación por unidad:

#Arreglamos como factor y quitamos los de cero ocupación
ocupacion_UM <- ocupacion_UM |>
  mutate(`Unidad médica` = factor(`Unidad médica`, 
                                levels = `Unidad médica`[order(`Hospitalizados (%)`)],
                                ordered = TRUE)) |>
  dplyr::filter(`Hospitalizados (%)` > 0)

#Reescalamos el porcentaje para que aparezca
plot_ocupacion <- ggplot(ocupacion_UM) +
  geom_col(aes(x = `Unidad médica`, y = `Hospitalizados (%)`/100, fill = `Hospitalizados (%)`)) +
  labs(
    x = "", 
    y = "Ocupación de la Unidad Médica (%)",
    caption = "**Nota** Se excluyen Unidades Médicas con ocupación del 0% o sin reporte."
  ) + 
  theme_minimal() + 
  scale_fill_gradientn(colours =  met.brewer("Cross", direction = -1)) + 
  coord_flip() +
  theme(
    legend.position = "none",
    axis.text.y     = element_text(size = 4),
    plot.caption    = element_markdown() ) +
  scale_y_continuous(labels = scales::label_percent())

plot_ocupacion

Podemos conjuntar ambos en un solo gráfico con cowplot:

plot_hosp <- plot_grid(plot_hospitalizados, ggplot() + theme_void(), plot_ocupacion, ncol = 3,
                       rel_widths = c(1, 0.1, 1))
plot_hosp

Positividad

Generamos la gráfica de positividad donde además se coloque el número de pruebas por semana. Para ello calculamos tanto la positividad como el número de pruebas:

datos_covid <- datos_covid |>
  #Calculamos también la positividad
  positividad(
    entidades            = "CIUDAD DE MÉXICO", 
    group_by_entidad     = FALSE, 
    tipo_prueba          = c("Antigeno", "PCR"),
    group_by_tipo_prueba = TRUE
  )

Generamos la gráfica de positividad distinguiendo por tipo de prueba:

#Nos quedamos sólo a  partir de 2022
datos_covid$positividad <- datos_covid$positividad |>
  dplyr::filter(year(FECHA_SINTOMAS) >= 2022)

#Para poner al nivel
mpruebas         <- max(datos_covid$positividad$n_pruebas) |> as.numeric()

positividad_plot <- ggplot(datos_covid$positividad) +
  geom_col(aes(x = as.Date(FECHA_SINTOMAS), 
               y = as.numeric(n_pruebas), 
               fill = TIPO_PRUEBA), alpha = 0.25) +
  geom_line(aes(x = as.Date(FECHA_SINTOMAS), 
                y = Positividad*mpruebas, color = TIPO_PRUEBA)) +
  theme_minimal() +
  scale_x_date(date_breaks = "1 month", date_labels = "%b-%Y", expand = c(0,0)) +
  labs(
    x = "", 
    y = "Número de pruebas realizadas",
    title = glue("POSITIVIDAD EN ", 
                 "<span style='color:{colores[3]}'>ANTIGENO</span> Y ", 
                 "<span style='color:{colores[6]}'>PCR</span>")
  ) +
  scale_y_continuous(labels = scales::label_comma(),  
                     sec.axis = sec_axis(~ . / mpruebas, 
                                         labels  = scales::label_percent(),
                                         name    = "Positividad (%)")) +
  scale_fill_manual("Tipo de prueba", values = c(colores[3], colores[6])) +
  scale_color_manual("Tipo de prueba", values = c(colores[3], colores[6])) +
  theme(
    axis.text.x     = element_text(angle = 90, hjust = 1),
    legend.position = "none",
    plot.title      = element_markdown()
  )

positividad_plot

Mortalidad

Por último generamos la gráfica de defunciones. Para ello tomamos la misma función que en casos pero con defunciones = TRUE en 4 grupos de edad:

#Calculamos las defunciones por grupo de edad
datos_covid <- datos_covid |>
  casos(
    entidades        = "CIUDAD DE MÉXICO",
    group_by_entidad = FALSE,
    defunciones      = TRUE,
    fecha_tipo       = "Defunción",
    edad_cut         = c(0, 20, 40, 60, Inf),
    list_name        = "defunciones"
  )
#Nos quedamos sólo con 2022
datos_covid$defunciones <- datos_covid$defunciones |>
  dplyr::filter(year(FECHA_DEF) == 2022)

plot_defunciones <- ggplot(datos_covid$defunciones) +
  geom_col(aes(x = as.Date(FECHA_DEF), y = as.numeric(n), fill = EDAD_CAT)) +
  facet_wrap(~EDAD_CAT, scales = "free_y") +
  theme_minimal() +
  labs(
    x = "",
    y = "Defunciones",
    title = "DEFUNCIONES"
  ) +
  scale_fill_manual(values = met.brewer("Cross", 4)) +
  scale_y_continuous(labels = scales::label_comma(accuracy = 1)) +
  scale_x_date(date_breaks = "1 month", date_labels = "%b-%Y", expand = c(0,0)) +
  theme(
    axis.text.x = element_text(angle = 90, hjust = 1),
    legend.position = "none"
  )

plot_defunciones

Finalmente unimos este panel con el de positividad

plot_defun_pos <-  plot_grid(positividad_plot, ggplot() + theme_void(), plot_defunciones,
                             rel_widths = c(1, 0.1, 1), ncol = 3)
plot_defun_pos

Generación del reporte

Finalmente juntamos todas las gráficas en un solo grid, agregamos el título:

#Juntamos los plots
gráfica_sin_titulo <- plot_grid(cdmx_rt, plot_hosp, plot_defun_pos, ncol = 1)

#Agregamos título
plot_title <- ggdraw() + draw_label("CIUDAD DE MÉXICO", fontface='bold', size = 40)

Y ¡magia! quedó la gráfica que elaboramos con los datos del paquete

plot_grid(plot_title, gráfica_sin_titulo, ncol = 1, rel_heights = c(0.1, 1))

Información adicional

sessioninfo::session_info()
## ─ Session info ───────────────────────────────────────────────────────────────
##  setting  value
##  version  R version 4.2.2 (2022-10-31)
##  os       macOS Big Sur ... 10.16
##  system   x86_64, darwin17.0
##  ui       X11
##  language es
##  collate  en_US.UTF-8
##  ctype    en_US.UTF-8
##  tz       America/Mexico_City
##  date     2023-02-15
##  pandoc   2.19.2 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/ (via rmarkdown)
## 
## ─ Packages ───────────────────────────────────────────────────────────────────
##  package         * version   date (UTC) lib source
##  assertthat        0.2.1     2019-03-21 [2] CRAN (R 4.2.0)
##  backports         1.4.1     2021-12-13 [2] CRAN (R 4.2.0)
##  bit               4.0.5     2022-11-15 [2] CRAN (R 4.2.1)
##  bit64             4.0.5     2020-08-30 [2] CRAN (R 4.2.0)
##  bitops            1.0-7     2021-04-24 [2] CRAN (R 4.2.0)
##  blob              1.2.3     2022-04-10 [2] CRAN (R 4.2.0)
##  broom             1.0.3     2023-01-25 [2] CRAN (R 4.2.2)
##  bslib             0.4.2     2022-12-16 [2] CRAN (R 4.2.0)
##  cachem            1.0.6     2021-08-19 [2] CRAN (R 4.2.0)
##  cellranger        1.1.0     2016-07-27 [2] CRAN (R 4.2.0)
##  cli               3.6.0     2023-01-09 [2] CRAN (R 4.2.2)
##  coarseDataTools   0.6-6     2021-12-09 [2] CRAN (R 4.2.0)
##  coda              0.19-4    2020-09-30 [2] CRAN (R 4.2.0)
##  colorspace        2.1-0     2023-01-23 [2] CRAN (R 4.2.2)
##  commonmark        1.8.1     2022-10-14 [2] CRAN (R 4.2.1)
##  covidmx         * 0.7.6     2023-02-15 [1] local
##  cowplot         * 1.1.1     2020-12-30 [2] CRAN (R 4.2.0)
##  crayon            1.5.2     2022-09-29 [2] CRAN (R 4.2.0)
##  curl              5.0.0     2023-01-12 [2] CRAN (R 4.2.2)
##  DBI               1.1.3     2022-06-18 [2] CRAN (R 4.2.0)
##  dbplyr            2.3.0     2023-01-16 [2] CRAN (R 4.2.2)
##  desc              1.4.2     2022-09-08 [2] CRAN (R 4.2.0)
##  digest            0.6.31    2022-12-11 [2] CRAN (R 4.2.1)
##  dplyr           * 1.1.0     2023-01-29 [2] CRAN (R 4.2.2)
##  duckdb            0.7.0     2023-02-14 [2] CRAN (R 4.2.2)
##  ellipsis          0.3.2     2021-04-29 [2] CRAN (R 4.2.0)
##  EpiEstim          2.2-4     2021-01-07 [2] CRAN (R 4.2.0)
##  evaluate          0.20      2023-01-17 [2] CRAN (R 4.2.2)
##  fansi             1.0.4     2023-01-22 [2] CRAN (R 4.2.2)
##  farver            2.1.1     2022-07-06 [2] CRAN (R 4.2.0)
##  fastmap           1.1.0     2021-01-25 [2] CRAN (R 4.2.0)
##  fitdistrplus      1.1-8     2022-03-10 [2] CRAN (R 4.2.0)
##  forcats         * 1.0.0     2023-01-29 [2] CRAN (R 4.2.2)
##  fs                1.6.1     2023-02-06 [2] CRAN (R 4.2.2)
##  gargle            1.3.0     2023-01-30 [2] CRAN (R 4.2.0)
##  generics          0.1.3     2022-07-05 [2] CRAN (R 4.2.0)
##  ggplot2         * 3.4.1     2023-02-10 [2] CRAN (R 4.2.0)
##  ggtext          * 0.1.2     2022-09-16 [2] CRAN (R 4.2.0)
##  glue            * 1.6.2     2022-02-24 [2] CRAN (R 4.2.0)
##  googledrive       2.0.0     2021-07-08 [2] CRAN (R 4.2.0)
##  googlesheets4     1.0.1     2022-08-13 [2] CRAN (R 4.2.0)
##  gridExtra         2.3       2017-09-09 [2] CRAN (R 4.2.0)
##  gridtext          0.1.5     2022-09-16 [2] CRAN (R 4.2.0)
##  gtable            0.3.1     2022-09-01 [2] CRAN (R 4.2.0)
##  haven             2.5.1     2022-08-22 [2] CRAN (R 4.2.0)
##  highr             0.10      2022-12-22 [2] CRAN (R 4.2.1)
##  hms               1.1.2     2022-08-19 [2] CRAN (R 4.2.0)
##  htmltools         0.5.4     2022-12-07 [2] CRAN (R 4.2.1)
##  httr              1.4.4     2022-08-17 [2] CRAN (R 4.2.0)
##  incidence         1.7.3     2020-11-04 [2] CRAN (R 4.2.0)
##  jquerylib         0.1.4     2021-04-26 [2] CRAN (R 4.2.0)
##  jsonlite          1.8.4     2022-12-06 [2] CRAN (R 4.2.0)
##  knitr             1.42      2023-01-25 [2] CRAN (R 4.2.2)
##  labeling          0.4.2     2020-10-20 [2] CRAN (R 4.2.0)
##  lattice           0.20-45   2021-09-22 [2] CRAN (R 4.2.2)
##  lifecycle         1.0.3     2022-10-07 [2] CRAN (R 4.2.1)
##  lubridate       * 1.9.2     2023-02-10 [2] CRAN (R 4.2.0)
##  magrittr          2.0.3     2022-03-30 [2] CRAN (R 4.2.0)
##  markdown          1.5       2023-01-31 [2] CRAN (R 4.2.2)
##  MASS              7.3-58.2  2023-01-23 [2] CRAN (R 4.2.2)
##  Matrix            1.5-3     2022-11-11 [2] CRAN (R 4.2.0)
##  MatrixModels      0.5-1     2022-09-11 [2] CRAN (R 4.2.0)
##  mcmc              0.9-7     2020-03-21 [2] CRAN (R 4.2.0)
##  MCMCpack          1.6-3     2022-04-13 [2] CRAN (R 4.2.0)
##  memoise           2.0.1     2021-11-26 [2] CRAN (R 4.2.0)
##  MetBrewer       * 0.2.0     2022-03-21 [2] CRAN (R 4.2.0)
##  modelr            0.1.10    2022-11-11 [2] CRAN (R 4.2.0)
##  munsell           0.5.0     2018-06-12 [2] CRAN (R 4.2.0)
##  pillar            1.8.1     2022-08-19 [2] CRAN (R 4.2.0)
##  pins              1.1.0     2023-01-21 [2] CRAN (R 4.2.2)
##  pkgconfig         2.0.3     2019-09-22 [2] CRAN (R 4.2.0)
##  pkgdown           2.0.7     2022-12-14 [2] CRAN (R 4.2.0)
##  plyr              1.8.8     2022-11-11 [2] CRAN (R 4.2.0)
##  png               0.1-8     2022-11-29 [2] CRAN (R 4.2.1)
##  purrr           * 1.0.1     2023-01-10 [2] CRAN (R 4.2.2)
##  quantreg          5.94      2022-07-20 [2] CRAN (R 4.2.0)
##  R6                2.5.1     2021-08-19 [2] CRAN (R 4.2.0)
##  ragg              1.2.5     2023-01-12 [2] CRAN (R 4.2.2)
##  rappdirs          0.3.3     2021-01-31 [2] CRAN (R 4.2.0)
##  Rcpp              1.0.10    2023-01-22 [2] CRAN (R 4.2.2)
##  RCurl             1.98-1.10 2023-01-27 [2] CRAN (R 4.2.0)
##  readr           * 2.1.4     2023-02-10 [2] CRAN (R 4.2.0)
##  readxl            1.4.2     2023-02-09 [2] CRAN (R 4.2.2)
##  reprex            2.0.2     2022-08-17 [2] CRAN (R 4.2.0)
##  reshape2          1.4.4     2020-04-09 [2] CRAN (R 4.2.0)
##  rlang             1.0.6     2022-09-24 [2] CRAN (R 4.2.0)
##  rmarkdown         2.20      2023-01-19 [2] CRAN (R 4.2.2)
##  rprojroot         2.0.3     2022-04-02 [2] CRAN (R 4.2.0)
##  rstudioapi        0.14      2022-08-22 [2] CRAN (R 4.2.0)
##  rvest             1.0.3     2022-08-19 [2] CRAN (R 4.2.0)
##  sass              0.4.5     2023-01-24 [2] CRAN (R 4.2.0)
##  scales            1.2.1     2022-08-20 [2] CRAN (R 4.2.0)
##  sessioninfo       1.2.2     2021-12-06 [2] CRAN (R 4.2.0)
##  SparseM           1.81      2021-02-18 [2] CRAN (R 4.2.0)
##  stringi           1.7.12    2023-01-11 [2] CRAN (R 4.2.2)
##  stringr         * 1.5.0     2022-12-02 [2] CRAN (R 4.2.1)
##  survival          3.5-3     2023-02-12 [2] CRAN (R 4.2.0)
##  systemfonts       1.0.4     2022-02-11 [2] CRAN (R 4.2.0)
##  textshaping       0.3.6     2021-10-13 [2] CRAN (R 4.2.0)
##  tibble          * 3.1.8     2022-07-22 [2] CRAN (R 4.2.0)
##  tidyr           * 1.3.0     2023-01-24 [2] CRAN (R 4.2.2)
##  tidyselect        1.2.0     2022-10-10 [2] CRAN (R 4.2.0)
##  tidyverse       * 1.3.2     2022-07-18 [2] CRAN (R 4.2.0)
##  timechange        0.2.0     2023-01-11 [2] CRAN (R 4.2.2)
##  tzdb              0.3.0     2022-03-28 [2] CRAN (R 4.2.0)
##  utf8              1.2.3     2023-01-31 [2] CRAN (R 4.2.2)
##  vctrs             0.5.2     2023-01-23 [2] CRAN (R 4.2.2)
##  vroom             1.6.1     2023-01-22 [2] CRAN (R 4.2.2)
##  withr             2.5.0     2022-03-03 [2] CRAN (R 4.2.0)
##  xfun              0.37      2023-01-31 [2] CRAN (R 4.2.2)
##  xml2              1.3.3     2021-11-30 [2] CRAN (R 4.2.0)
##  yaml              2.3.7     2023-01-23 [2] CRAN (R 4.2.2)
## 
##  [1] /private/var/folders/42/2kdf45dd1qz5n7kf9lm8ld9r0000gn/T/RtmpQeTePG/temp_libpath141b01031a31c
##  [2] /Library/Frameworks/R.framework/Versions/4.2/Resources/library
## 
## ──────────────────────────────────────────────────────────────────────────────