Deuda pública consolidada por sector institucional
deuda_publica_by_sector.RdDescarga y transforma el archivo "Deuda_Consolidada_Por_Sector_Trimestral.xlsx" publicado por el Banco Central de la República Dominicana (BCRD), y lo convierte en un tibble en formato largo (tidy) con una fila por concepto (sector, sub-sector o fuente de financiamiento dentro de un sector) y trimestre, incluyendo el monto en millones de US$ y su equivalente como porcentaje del PIB.
Value
Un tibble con una fila por combinación de concepto y trimestre, con las columnas:
- grupo
chr."Sector Público No Financiero"o"Sector Público Financiero".NApara las filasnivel == "total".- sector
chr."Gobierno Central","Resto del SPNF"o"Banco Central".NAparanivel %in% c("total", "grupo").- tipo_deuda
chr."Consolidada","Externa"o"Interna".NApara las filas agregadas (nivel %in% c("grupo", "sector")) que suman ambas fuentes.- nivel
chr. Nivel jerárquico:"total","grupo","sector","fuente"o"detalle".- concepto
chr. Descripción de la fila tal como aparece en el Excel, sin código inicial ni paréntesis/notas al pie sobrantes.- fecha
Date. Primer día del trimestre (2013-03-01,2013-06-01, ...). Ver advertencia en@details.- year
dbl. Año extraído defecha.- trimestre
dbl. Trimestre (1 a 4) extraído defecha.- monto
dbl. Monto de deuda reportado para ese concepto y trimestre, en millones de US$.- gdp
dbl. PIB nominal trimestral en millones de US$.- as_gdp_percent
dbl.monto / gdp * 100.
Details
A diferencia de deuda_publica_by_fuente(), este archivo organiza las
filas en una jerarquía de cuatro niveles. Las filas no tienen un
código único y consistente para distinguir todos los niveles, así que
la detección combina dos señales:
"total": tres filas al inicio, en MAYÚSCULA SOSTENIDA ("DEUDA PÚBLICA CONSOLIDADA", "...EXTERNA CONSOLIDADA", "...INTERNA CONSOLIDADA"), sin código ni sector asociado."grupo": dos filas con código de letra (A./B.), agrupando sectores institucionales (Sector Público No Financiero / Sector Público Financiero)."sector": filas con código numérico (1./2./3.) dentro de cada grupo (Gobierno Central, Resto del SPNF, Banco Central)."fuente": filas sin código propio que empiezan con "Deuda Externa" o "Deuda Interna" (mayúscula inicial únicamente, a diferencia de las filas "total"), desagregando cada sector."detalle": una fila memo que empieza con "De los cuales" ("De los cuales: Intragubernamental"), hija de la fila "Deuda Interna" del Gobierno Central.
El texto original también tiene sangría (espacios en blanco al inicio
de la celda) que en teoría distinguiría estos niveles, pero
readxl::read_excel() usa trim_ws = TRUE por defecto y la elimina
antes de que la función pueda medirla. Por eso el nivel se detecta por
el patrón del propio texto (mayúscula sostenida vs. mayúscula inicial,
y el prefijo "De los cuales") en lugar de la indentación. Esto es más
robusto frente al comportamiento de lectura, pero depende de que el
BCRD mantenga esa convención de mayúsculas/minúsculas en el texto.
Al igual que en deuda_publica_by_fuente(), la fila " A. SECTOR
PÚBLICO NO FINANCIERO..." tiene un espacio en blanco inicial que
"B. SECTOR PÚBLICO FINANCIERO..." no tiene; se resuelve aplicando
stringr::str_squish() antes de extraer el código.
grupo y sector se completan hacia abajo (con relleno acotado, no
tidyr::fill() directo sobre toda la tabla) para que las filas de
nivel "fuente" y "detalle" hereden el sector al que pertenecen sin
que ese valor se filtre hacia las filas "total" siguientes. tipo_deuda
se deriva del texto en los niveles "total" y "fuente"; en el nivel
"detalle" se hereda de la fila "fuente" inmediatamente anterior (en
este archivo, siempre "Deuda Interna"), usando dplyr::lag() en lugar
de fill() para no arrastrar el valor más allá de esa fila.
Las fechas de las columnas trimestrales no se leen del archivo: se
asume que la primera columna de datos corresponde a T1-2013 y se genera
una secuencia trimestral consecutiva con
length.out = ncol(raw_data) - 1. Si el BCRD inserta, elimina o
reordena columnas, o cambia el trimestre inicial, las fechas quedarán
mal alineadas sin que la función lo detecte.
El PIB nominal usado para calcular as_gdp_percent se toma de la fila
memo "Producto Interno Bruto ( Millones de USD)" en la hoja
"Sector (%PIB)", igual que en deuda_publica_by_fuente().
Examples
if (FALSE) { # \dontrun{
deuda_publica_by_sector()
# Deuda del Banco Central, solo la fuente externa
deuda_publica_by_sector() |>
dplyr::filter(sector == "Banco Central", tipo_deuda == "Externa")
} # }