# se cargará el parquete epirhandbook
#     -> paquete que proporciona datos y ejemplos del Epidemiologist R Handbook

if (requireNamespace("epirhandbook", quietly = TRUE)) {
  library(epirhandbook)
} else {
  message(
    "El paquete 'epirhandbook' no está instalado.\n",
    "Si desea usar los datos del Epidemiologist R Handbook, ejecute en la consola:\n",
    "  install.packages('remotes')\n",
    "  remotes::install_github('appliedepi/epirhandbook')\n"
  )
}

# Paquetes de trabajo general
paquetes_basicos <- c("tidyverse", "ggplot2", "readxl", "dplyr")

instalar_si_falta <- function(pk) {
  if (!requireNamespace(pk, quietly = TRUE)) {
    install.packages(pk)
  }
  library(pk, character.only = TRUE)
}

invisible(lapply(paquetes_basicos, instalar_si_falta))

9.2 DESCARGAR DATOS DE EJEMPLO

# Ejecutar manualmente en una sesión interactiva de RStudio para descargar los datos:
# (creará una carpeta y descargará los archivos de ejemplo)

library(epirhandbook)
epirhandbook::get_data("all")
# Ejemplo: lectura desde Excel (ajustar ruta según la carpeta donde descargó los datos)
#en una carpeta "EPIDATA/linelist_cleaned.xlsx"
'/Volumes/JESUS SSD/EPIDATA/linelist_cleaned.xlsx'
[1] "/Volumes/JESUS SSD/EPIDATA/linelist_cleaned.xlsx"

CARGAR LA BASE LINELIST

library(readxl)

ruta_linelist <- "/Volumes/JESUS SSD/EPIDATA/linelist_cleaned.xlsx"

if (!file.exists(ruta_linelist)) {
  stop(
    paste0(
      "No se encontró el archivo", ruta_linelist, ".\n",
      "Verifique la ruta o descargue la base con epirhandbook::get_data('all')."
    )
  )
}

linelist <- readxl::read_excel(ruta_linelist)

# vistazo general de las primeras filas

head(linelist)
NA
LS0tCnRpdGxlOiAiUFJFUEFSQUNJw5NOIERFIEVOVE9STk8gUEFSQSBFUElERU1JT0xPR0lBIgpzdWJ0aXRsZTogIkVzdHVkaWFudGU6IEplc8O6cyBBbmdlbCBIZXJuw6FuZGV6IENow6F2ZXoiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCgoKYGBge3J9CiMgc2UgY2FyZ2Fyw6EgZWwgcGFycXVldGUgZXBpcmhhbmRib29rCiMgICAgIC0+IHBhcXVldGUgcXVlIHByb3BvcmNpb25hIGRhdG9zIHkgZWplbXBsb3MgZGVsIEVwaWRlbWlvbG9naXN0IFIgSGFuZGJvb2sKCmlmIChyZXF1aXJlTmFtZXNwYWNlKCJlcGlyaGFuZGJvb2siLCBxdWlldGx5ID0gVFJVRSkpIHsKICBsaWJyYXJ5KGVwaXJoYW5kYm9vaykKfSBlbHNlIHsKICBtZXNzYWdlKAogICAgIkVsIHBhcXVldGUgJ2VwaXJoYW5kYm9vaycgbm8gZXN0w6EgaW5zdGFsYWRvLlxuIiwKICAgICJTaSBkZXNlYSB1c2FyIGxvcyBkYXRvcyBkZWwgRXBpZGVtaW9sb2dpc3QgUiBIYW5kYm9vaywgZWplY3V0ZSBlbiBsYSBjb25zb2xhOlxuIiwKICAgICIgIGluc3RhbGwucGFja2FnZXMoJ3JlbW90ZXMnKVxuIiwKICAgICIgIHJlbW90ZXM6Omluc3RhbGxfZ2l0aHViKCdhcHBsaWVkZXBpL2VwaXJoYW5kYm9vaycpXG4iCiAgKQp9CgojIFBhcXVldGVzIGRlIHRyYWJham8gZ2VuZXJhbApwYXF1ZXRlc19iYXNpY29zIDwtIGMoInRpZHl2ZXJzZSIsICJnZ3Bsb3QyIiwgInJlYWR4bCIsICJkcGx5ciIpCgppbnN0YWxhcl9zaV9mYWx0YSA8LSBmdW5jdGlvbihwaykgewogIGlmICghcmVxdWlyZU5hbWVzcGFjZShwaywgcXVpZXRseSA9IFRSVUUpKSB7CiAgICBpbnN0YWxsLnBhY2thZ2VzKHBrKQogIH0KICBsaWJyYXJ5KHBrLCBjaGFyYWN0ZXIub25seSA9IFRSVUUpCn0KCmludmlzaWJsZShsYXBwbHkocGFxdWV0ZXNfYmFzaWNvcywgaW5zdGFsYXJfc2lfZmFsdGEpKQpgYGAKCjkuMiBERVNDQVJHQVIgREFUT1MgREUgRUpFTVBMTwoKYGBge3J9CiMgRWplY3V0YXIgbWFudWFsbWVudGUgZW4gdW5hIHNlc2nDs24gaW50ZXJhY3RpdmEgZGUgUlN0dWRpbyBwYXJhIGRlc2NhcmdhciBsb3MgZGF0b3M6CiMgKGNyZWFyw6EgdW5hIGNhcnBldGEgeSBkZXNjYXJnYXLDoSBsb3MgYXJjaGl2b3MgZGUgZWplbXBsbykKCmxpYnJhcnkoZXBpcmhhbmRib29rKQplcGlyaGFuZGJvb2s6OmdldF9kYXRhKCJhbGwiKQojIEVqZW1wbG86IGxlY3R1cmEgZGVzZGUgRXhjZWwgKGFqdXN0YXIgcnV0YSBzZWfDum4gbGEgY2FycGV0YSBkb25kZSBkZXNjYXJnw7MgbG9zIGRhdG9zKQojZW4gdW5hIGNhcnBldGEgIkVQSURBVEEvbGluZWxpc3RfY2xlYW5lZC54bHN4IgpgYGAKYGBge3J9CicvVm9sdW1lcy9KRVNVUyBTU0QvRVBJREFUQS9saW5lbGlzdF9jbGVhbmVkLnhsc3gnCmBgYAoKQ0FSR0FSIExBIEJBU0UgTElORUxJU1QKCmBgYHtyfQpsaWJyYXJ5KHJlYWR4bCkKCnJ1dGFfbGluZWxpc3QgPC0gIi9Wb2x1bWVzL0pFU1VTIFNTRC9FUElEQVRBL2xpbmVsaXN0X2NsZWFuZWQueGxzeCIKCmlmICghZmlsZS5leGlzdHMocnV0YV9saW5lbGlzdCkpIHsKICBzdG9wKAogICAgcGFzdGUwKAogICAgICAiTm8gc2UgZW5jb250csOzIGVsIGFyY2hpdm8iLCBydXRhX2xpbmVsaXN0LCAiLlxuIiwKICAgICAgIlZlcmlmaXF1ZSBsYSBydXRhIG8gZGVzY2FyZ3VlIGxhIGJhc2UgY29uIGVwaXJoYW5kYm9vazo6Z2V0X2RhdGEoJ2FsbCcpLiIKICAgICkKICApCn0KCmxpbmVsaXN0IDwtIHJlYWR4bDo6cmVhZF9leGNlbChydXRhX2xpbmVsaXN0KQoKIyB2aXN0YXpvIGdlbmVyYWwgZGUgbGFzIHByaW1lcmFzIGZpbGFzCgpoZWFkKGxpbmVsaXN0KQoKYGBgCgoKCgoK