Skip to contents

Toma la corrida vigente de cada causa y año del registro, arma la tabla canónica (tasas y conteos), la valida y la escribe en <carpeta>/mod/consolidado/<AAAA-MM-DD>_<nombre>_v<n>/: canonico/ (la tabla canónica por medida), tablas/ (una tabla por medida con la forma que declara el perfil de columnas) y manifest.yaml. El consolidado se agrega al registro de corridas solo si se da registro_salida.

Usage

dl_consolidar(
  registro,
  carpeta,
  perfil,
  maestro,
  rutas = dl_rutas(),
  causas = NULL,
  anios = NULL,
  permitir_huecos = FALSE,
  registrar = !is.null(registro_salida),
  nombre = "consolidado",
  registro_salida = NULL,
  carpeta_corridas = carpeta,
  nombres_nivel4 = file.path(dirname(maestro), "causas_nivel4_es.csv"),
  ajuste_directo = integer()
)

Arguments

registro

Archivo YAML del registro de corridas.

carpeta

Carpeta raíz donde se escribe el consolidado.

perfil

Archivo YAML del perfil de columnas; el paquete trae system.file("perfiles", "perfil_v1.yaml", package = "dismodlite") y perfil_v2.yaml (ver dl_perfil_cargar()).

maestro

Archivo master_gbd.csv con los nombres en español de las causas. Debe ser el de rutas (el master_gbd.csv de la carpeta registro de dl_rutas()), con el que se comprueban las sumas de hijas.

rutas

Rutas de dl_rutas(); se usan el registro (la carpeta de tablas de referencia con master_gbd.csv y etiquetas_es.csv, no el registro de corridas) y los catálogos. Hay que darlas (por ejemplo dl_rutas_ejemplo(9100) con los datos de ejemplo).

causas, anios

Causas y años a consolidar (NULL: todos los del registro).

permitir_huecos

TRUE acepta pares (causa, año) sin corrida y los declara en el manifiesto.

registrar

TRUE agrega el consolidado al registro registro_salida.

nombre

Nombre corto del consolidado: minúsculas sin tildes, números y guiones.

registro_salida

Archivo YAML del registro donde se anota el consolidado (opcional).

carpeta_corridas

Carpeta raíz donde están las corridas (por defecto, carpeta).

nombres_nivel4

Archivo con los nombres en español de las causas de nivel 4 (opcional).

ajuste_directo

Causas con hijas en master_gbd.csv que se consolidan desde su propio ajuste y no desde la suma de sus hijas: un vector de cause_id (por defecto, ninguna).

Value

Objeto de clase dl_run del consolidado, con run_id, dir (su carpeta), manifest (el contenido de manifest.yaml) y files (las tablas de canonico/, con su ruta, su sha256 y su número de filas).

Details

Los pasos, que también son funciones: dl_consolidado_seleccionar() (la corrida vigente de cada causa y año), dl_consolidado_canonico() (las celdas apiladas), dl_consolidado_conteos() (los conteos), la validación contra el contrato estimates/v1 (dl_validar_estimaciones()) y dl_perfil_proyectar() (las tablas del perfil). Todo se valida en memoria antes de escribir, y la escritura va a una carpeta temporal que se renombra al final. El manifiesto declara el perfil (con su sha256), la procedencia de la población, un bloque por causa y año (la corrida de origen, si es una suma, sus compuertas) y las limitaciones del consolidado.

La incidencia de una causa cuya configuración dice exportar: {incidencia: no} (ver dl_configuracion()) no entra: sus tablas de prevalencia y de AVD sí. El bloque de esa causa lleva incidencia_exportada: false y las limitaciones la nombran; la corrida conserva su incidencia.

Una causa que el maestro declara con hijas debe venir de su suma (dl_sumar_hijas()). Si se modeló entera, con un ajuste propio, se nombra en ajuste_directo y se consolida desde ese ajuste: su bloque lleva ajuste_directo: true y las limitaciones lo dicen (ver dl_consolidado_seleccionar()).

Usa el registro de corridas y la carpeta del registro de causas (master_gbd.csv y etiquetas_es.csv): la de un proyecto la arma dl_proyecto() (dl_proyecto(...)$rutas$registry); la de un proyecto en el formato completo es su carpeta registro.

Examples

# \donttest{
# una corrida de prueba de la causa 9101 del ejemplo (formato completo), anotada en un
# registro de corridas nuevo
completo <- system.file("extdata", "acs_peru_completo", package = "dismodlite")
salida <- file.path(tempdir(), "consolidado")
dir.create(salida)
registro <- file.path(salida, "registro_corridas.yaml")
writeLines("datasets: []", registro)
run <- suppressMessages(dl_correr(completo, causa = 9101, semilla = 1, rapido = TRUE,
                                  sensibilidad = FALSE, carpeta_salida = salida,
                                  registro = registro))
rutas <- dl_rutas_ejemplo(9101, formato = "completo")
perfil <- system.file("perfiles", "perfil_v2.yaml", package = "dismodlite")
maestro <- file.path(completo, "registro", "master_gbd.csv")

# el consolidado en una llamada
cons <- dl_consolidar(registro, salida, perfil = perfil, maestro = maestro, rutas = rutas)
cons
#> <dl_run> corrida 2026-10-15_consolidado_v1 (consolidado)
#>   carpeta: /tmp/RtmpucVo2P/consolidado/mod/consolidado/2026-10-15_consolidado_v1
#>   3 particiones canónicas (una por medida)
list.files(cons$dir, recursive = TRUE)
#> [1] "canonico/cause/incidence/2026-10-15_consolidado_v1.csv" 
#> [2] "canonico/cause/prevalence/2026-10-15_consolidado_v1.csv"
#> [3] "canonico/cause/yld/2026-10-15_consolidado_v1.csv"       
#> [4] "manifest.yaml"                                          
#> [5] "tablas/avd.csv"                                         
#> [6] "tablas/incidencia.csv"                                  
#> [7] "tablas/prevalencia.csv"                                 
# los códigos de ubicación se leen como texto, para conservar el cero inicial
prev <- read.csv(file.path(cons$dir, "tablas", "prevalencia.csv"),
                 colClasses = c(ubigeo = "character"), fileEncoding = "UTF-8")
head(prev)
#>   causa_gbd_id                  causa_gbd anio ubigeo departamento nivel
#> 1         9101 ACS de miembros inferiores 2023     01     Amazonas     1
#> 2         9101 ACS de miembros inferiores 2023     01     Amazonas     1
#> 3         9101 ACS de miembros inferiores 2023     01     Amazonas     1
#> 4         9101 ACS de miembros inferiores 2023     01     Amazonas     1
#> 5         9101 ACS de miembros inferiores 2023     01     Amazonas     1
#> 6         9101 ACS de miembros inferiores 2023     01     Amazonas     1
#>   edad_id         edad sexo_id      medida metrica    valor  inferior superior
#> 1      13 40 a 44 años       1 Prevalencia  Número 110.8230  81.84509 150.4040
#> 2      14 45 a 49 años       1 Prevalencia  Número 138.6010 109.68422 172.3718
#> 3      15 50 a 54 años       1 Prevalencia  Número 158.6720 125.90102 197.7501
#> 4      16 55 a 59 años       1 Prevalencia  Número 174.0130 139.33666 218.3846
#> 5      17 60 a 64 años       1 Prevalencia  Número 181.7774 145.26571 221.6574
#> 6      18 65 a 69 años       1 Prevalencia  Número 187.6810 148.79377 229.7768
#>                        run_origen
#> 1 2026-10-15_causa-9101-prueba_v1
#> 2 2026-10-15_causa-9101-prueba_v1
#> 3 2026-10-15_causa-9101-prueba_v1
#> 4 2026-10-15_causa-9101-prueba_v1
#> 5 2026-10-15_causa-9101-prueba_v1
#> 6 2026-10-15_causa-9101-prueba_v1

# los mismos pasos, uno por uno
sel <- dl_consolidado_seleccionar(registro, salida, rutas = rutas)
sel[, c("cause_id", "year", "run_id", "agregacion")]
#>    cause_id  year                          run_id agregacion
#>       <int> <int>                          <char>     <char>
#> 1:     9101  2023 2026-10-15_causa-9101-prueba_v1       <NA>
canonica <- dl_consolidado_canonico(sel, paste0(Sys.Date(), "_consolidado_v1"))
table(canonica$measure_name, canonica$metric_name)
#>                                     
#>                                      Percent Rate
#>   Incidence                                0  468
#>   Prevalence                             468    0
#>   YLDs (Years Lived with Disability)       0  468
celdas <- dl_consolidado_conteos(canonica, sel)
attr(celdas, "poblacion_acquisition_id")
#> [1] "sintetico_poblacion_v1"
# los nombres en español de la causa (las de nivel 4, como 9101, en causas_nivel4_es.csv)
master <- read.csv(file.path(completo, "registro", "causas_nivel4_es.csv"), fileEncoding = "UTF-8")
etiquetas <- read.csv(file.path(completo, "registro", "etiquetas_es.csv"),
                      colClasses = "character", fileEncoding = "UTF-8")
tablas <- dl_perfil_proyectar(celdas, dl_perfil_cargar(perfil), master, etiquetas)
names(tablas)
#> [1] "prevalence" "incidence"  "yld"       
head(tablas$prevalence)
#>    causa_gbd_id                  causa_gbd  anio ubigeo departamento nivel
#>           <int>                     <char> <int> <char>       <char> <int>
#> 1:         9101 ACS de miembros inferiores  2023     01     Amazonas     1
#> 2:         9101 ACS de miembros inferiores  2023     01     Amazonas     1
#> 3:         9101 ACS de miembros inferiores  2023     01     Amazonas     1
#> 4:         9101 ACS de miembros inferiores  2023     01     Amazonas     1
#> 5:         9101 ACS de miembros inferiores  2023     01     Amazonas     1
#> 6:         9101 ACS de miembros inferiores  2023     01     Amazonas     1
#>    edad_id         edad sexo_id      medida metrica    valor  inferior superior
#>      <int>       <char>   <int>      <char>  <char>    <num>     <num>    <num>
#> 1:      13 40 a 44 años       1 Prevalencia  Número 110.8230  81.84509 150.4040
#> 2:      14 45 a 49 años       1 Prevalencia  Número 138.6010 109.68422 172.3718
#> 3:      15 50 a 54 años       1 Prevalencia  Número 158.6720 125.90102 197.7501
#> 4:      16 55 a 59 años       1 Prevalencia  Número 174.0130 139.33666 218.3846
#> 5:      17 60 a 64 años       1 Prevalencia  Número 181.7774 145.26571 221.6574
#> 6:      18 65 a 69 años       1 Prevalencia  Número 187.6810 148.79377 229.7768
#>                         run_origen
#>                             <char>
#> 1: 2026-10-15_causa-9101-prueba_v1
#> 2: 2026-10-15_causa-9101-prueba_v1
#> 3: 2026-10-15_causa-9101-prueba_v1
#> 4: 2026-10-15_causa-9101-prueba_v1
#> 5: 2026-10-15_causa-9101-prueba_v1
#> 6: 2026-10-15_causa-9101-prueba_v1
unlink(salida, recursive = TRUE)
# }