Skip to contents

Introducción

Tutorial Introductorio — Este tutorial presenta una guía práctica para comenzar a utilizar el paquete climasus4r. El objetivo es demostrar el flujo básico de trabajo, desde la instalación del paquete hasta la creación de series temporales a partir de datos de salud del DATASUS, integrando información de salud, clima y medio ambiente.

El Sistema Único de Salud (SUS) pone a disposición grandes bases de datos públicas, como SIM, SIH, SINAN, CNES, SINASC. Sin embargo, estos datos generalmente requieren etapas de importación, limpieza, estandarización y agregación antes de poder ser utilizados en análisis epidemiológicos.

El paquete climasus4r fue desarrollado para automatizar y estandarizar este proceso, permitiendo análisis reproducibles, rápidos y escalables en estudios de clima, ambiente y salud pública.

🎯 Lo que aprenderá

📦

Instalación

Instalar el paquete climasus4r de forma rápida y eficiente

⚡

Importación Optimizada

Importar datos del DATASUS con caché y procesamiento paralelo

🧹

Limpieza y Estandarización

Corregir la codificación y estandarizar variables

🔍

Filtrado

Filtrar por causas de defunción y variables demográficas

📊

Agregación Temporal

Crear series temporales diarias, mensuales y anuales

💾

Exportación e Importación

Guardar y cargar datos con metadatos completos


📋 El Flujo de Trabajo de climasus4r

El análisis de datos con climasus4r sigue un pipeline lógico y secuencial, donde el resultado de una función es la entrada de la siguiente. Este diseño, inspirado en el tidyverse, hace que el código sea más legible y fácil de mantener.

sus_data_import() → sus_data_clean_encoding() → sus_data_standardize() → sus_data_create_variables() → sus_data_filter_cid() → sus_data_filter_demographics() → sus_data_aggregate()

Cada función ejecuta una etapa específica del procesamiento, como importación, limpieza, estandarización, filtrado y agregación de los datos. Al final de este pipeline, los datos estarán organizados y listos para análisis epidemiológicos o construcción de series temporales.


1. Instalación

El paquete climasus4r está disponible en GitHub y puede instalarse de dos formas. Recomendamos la Opción 1 para la mayoría de los usuarios.

Si aún no tiene el paquete remotes instalado, ejecute el código a continuación:

if (!require("remotes")) { install.packages("remotes")}

Opción 1: Instalación vía GitHub (Recomendado)

Esta es la forma más rápida de obtener la versión más reciente:

# Instalar o actualizar el paquete directamente desde GitHub
remotes::install_github("ByMaxAnjos/climasus4r", upgrade = "never")

Actualizaciones: climasus4r está en desarrollo activo. Para actualizar, basta con ejecutar el comando anterior nuevamente. R sobrescribirá la versión antigua automáticamente. Después de la actualización, se recomienda reiniciar la sesión (Menú: Session > Restart R).

Opción 2: Instalación vía Archivo Local (.zip)

Esta opción se recomienda para entornos con inestabilidad de conexión, restricciones de red o uso en capacitaciones con múltiples usuarios.

  1. Descargar el paquete: Haga clic AQUÍ para descargar el .zip
  2. Extraer el archivo: Extraiga el contenido en una carpeta de fácil acceso (ej.: Descargas o Escritorio)
  3. Instalar localmente:
# IMPORTANTE: Cambie la ruta a continuación por el lugar donde guardó el paquete
remotes::install_local(
  "C:/Ruta/Para/Su/Carpeta/climasus4r-master",
  upgrade = "never"
)

2. Cargando el Paquete

Después de la instalación, cargue el paquete siempre que inicie una nueva sesión en R:

library(climasus4r)

3. Importación de Datos con sus_data_import()

La primera etapa del flujo consiste en la importación de los datos. La función sus_data_import() automatiza la descarga y lectura de los microdatos del DATASUS.

El DATASUS posee diversos sistemas de información. En este tutorial, utilizaremos el SIM-DO (mortalidad) como ejemplo.

Ejemplo Básico

Vamos a importar datos de mortalidad de los estados de Rondônia ("RO") y Amazonas ("AM") para los años 2016 a 2017:

df_raw <- sus_data_import(
  system = "SIM-DO",
  year = 2016:2017,
  uf = c("RO", "AM"),
  lang = "es"
)

head(df_raw)

¿Qué sucedió? La función sus_data_import() realizó automáticamente: 1. Descarga: Descargó los archivos .DBC del FTP del DATASUS 2. Descompresión: Extrajo los archivos contenidos en los .DBC 3. Lectura: Leyó todos los archivos en un único data.frame 4. Metadatos: Añadió información sobre el origen de los datos

Optimizando la Importación: Caché y Procesamiento Paralelo

Usando Caché para Evitar Re-descargas

Por defecto (use_cache = TRUE), la función guarda una copia de los datos descargados. En la próxima ejecución con los mismos parámetros, los datos se leerán directamente de la caché.

df_custom_cache <- sus_data_import(
  system = "SIM-DO",
  year = 2018,
  uf = "RO",
  use_cache = TRUE,
  cache_dir = "~/.climasus4r_cache/data",
  lang = "es"
)
Acelerando con Procesamiento Paralelo
# Descargar datos de 3 estados en paralelo
df_parallel <- sus_data_import(
  system = "SIM-DO",
  year = 2018:2020,
  uf = c("RO", "PA", "MT"),
  use_cache = TRUE,
  parallel = TRUE,
  workers = 3,
  lang = "es"
)

¿Cuántos workers usar? Un buen punto de partida es usar el número de núcleos de su procesador menos uno (parallel::detectCores() - 1).


4. Limpieza de Codificación con sus_data_clean_encoding()

Los datos del DATASUS frecuentemente vienen con problemas de codificación de caracteres. La función sus_data_clean_encoding() resuelve esto convirtiendo todas las columnas de texto a UTF-8.

# Corregir la codificación de caracteres
df_clean <- sus_data_clean_encoding(df_raw, lang = "es")

head(df_clean)

5. Estandarización de Datos con sus_data_standardize()

Esta etapa es crucial para la consistencia del análisis. La función realiza:

  • Renombra columnas con nombres estandarizados (ej.: CAUSABAS → underlying_cause_of_death)
  • Convierte columnas a los tipos de datos correctos
  • Crea nuevas variables útiles como rangos de edad
df_std <- sus_data_standardize(df_clean, lang = "es")

head(df_std)

Objeto climasus_df: A partir de este punto, nuestro data.frame posee una clase especial que permite el flujo continuo de metadatos entre las funciones.


6. Creación de Variables con sus_data_create_variables()

Antes de filtrar, frecuentemente queremos crear variables derivadas. La función sus_data_create_variables() permite crear:

  • Rangos de edad: Grupos personalizados o estándar IBGE
  • Variables de calendario: Día de la semana, mes, estación del año
  • Otras variables: Década de nacimiento, etc.
df_vars <- sus_data_create_variables(
  df_std,
  create_age_groups = TRUE,
  create_calendar_vars = TRUE,
  lang = "es"
)

head(df_vars)

Nuevas columnas creadas: - faixa_etaria_ibge: Grupos etarios de 5 años (estándar IBGE) - dia_da_semana: Lunes a Domingo - mes_nome: Nombre del mes - estacao: Estación del año - semana_do_ano: Número de la semana


7. Filtrado por Causa de Defunción con sus_data_filter_cid()

Vamos a filtrar los datos para seleccionar solo defunciones por enfermedades respiratorias y enfermedades cardiovasculares.

df_cid <- sus_data_filter_cid(
  df_vars,
  disease_group = c("respiratory", "cardiovascular"),
  lang = "es"
)

head(df_cid)

Explorando los Grupos de Enfermedades Disponibles

# Abrir interfaz interactiva de exploración
sus_data_cid_select(lang = "es")

Grupos de enfermedades comúnmente usados: - respiratory (enfermedades respiratorias) - cardiovascular (enfermedades cardiovasculares) - neoplasms (neoplasias/cáncer) - diabetes (diabetes mellitus) - infectious (enfermedades infecciosas)


8. Filtrado por Variables Demográficas con sus_data_filter_demographics()

Vamos a refinar el filtro para un subgrupo demográfico específico:

  • Sexo: Femenino
  • Edad: Entre 20 y 59 años
  • Raza/Color: Negra o Parda
df_demo <- sus_data_filter_demographics(
  df_cid,
  sex = "Feminino",
  age_range = c(20, 59),
  race = c("Preta", "Parda"),
  lang = "es"
)

head(df_demo)

Idioma: Cuando lang = "pt", use los valores en portugués: "Feminino", "Masculino", "Preta", "Parda", etc.


9. Agregación Temporal con sus_data_aggregate()

Finalmente, vamos a agregar los registros para crear series temporales.

Agregación Mensual

df_monthly <- sus_data_aggregate(
  df_demo,
  time_unit = "month",
  lang = "es"
)

head(df_monthly)

Agregación Diaria

df_daily <- sus_data_aggregate(
  df_demo,
  time_unit = "day",
  lang = "es"
)

head(df_daily)

10. Exportación de Datos con sus_data_export()

Formatos Soportados

Formato Extensión Uso Recomendado
RDS .rds Formato nativo de R
Parquet .parquet Gran volumen, interoperabilidad
CSV .csv Universal, para compartir
GeoParquet .geoparquet Datos espaciales optimizados
Shapefile .shp GIS tradicional

Ejemplos de Exportación

# Exportar en CSV con metadatos
sus_data_export(
  df_monthly,
  file_path = "obitos_mensais_resumo_cardio.csv",
  format = "csv",
  include_metadata = TRUE,
  lang = "es"
)
# Exportar en Parquet (más eficiente)
sus_data_export(
  df_monthly,
  file_path = "obitos_mensais_resumo_cardio.parquet",
  format = "parquet",
  include_metadata = TRUE,
  lang = "es"
)

Exportación con Metadatos Personalizados

sus_data_export(
  df_monthly,
  file_path = "analise_especifica.csv",
  format = "csv",
  include_metadata = TRUE,
  metadata = list(
    source_system = "SIM-DO",
    states = c("RO", "AM"),
    years = c(2016, 2017),
    disease_groups = c("respiratory", "cardiovascular"),
    author = "Su Nombre",
    project = "Estudio Clima y Salud"
  ),
  lang = "es"
)

11. Importación de Datos con sus_data_read()

Lectura de Archivo Único

df_lido <- sus_data_read(
  path = "obitos_mensais_resumo_cardio.csv",
  format = "csv",
  read_metadata = TRUE,
  lang = "es"
)

# Acceder a los metadatos
sus_meta(df_lido, print_history = TRUE)

Lectura en Lote (Múltiples Archivos)

# Leer todos los archivos CSV de una carpeta
df_diretorio <- sus_data_read(
  path = "resultados_analises/",
  format = "csv",
  lang = "es"
)

Lectura con Procesamiento Paralelo

df_paralelo <- sus_data_read(
  path = "pasta_de_dados/",
  format = "parquet",
  parallel = TRUE,
  workers = 4,
  read_metadata = TRUE,
  lang = "es"
)

🎉 Conclusión

¡Felicitaciones! Ha completado el flujo de trabajo básico de climasus4r. En pocos pasos, fue capaz de:

  • Descargar e importar datos brutos del DATASUS de forma optimizada
  • Limpiar, estandarizar y enriquecer los datos con nuevas variables
  • Filtrar por criterios epidemiológicos y demográficos
  • Crear series temporales listas para el análisis
  • Exportar e importar datos con metadatos completos

📚 Próximos Pasos

  1. Pruebe otros sistemas (system = "SIH" para hospitalizaciones)
  2. Pruebe diferentes estados y años
  3. Explore diferentes grupos de enfermedades
  4. Combine con datos climáticos para análisis de impacto
  5. Consulte la documentación completa: github.com/ByMaxAnjos/climasus4r

🌲 ¿Tiene comentarios o sugerencias?

¿Tiene alguna idea de mejora o encontró algún error? Haga clic en el botón de abajo para abrir un nuevo issue en GitHub y compartir sus sugerencias directamente con nosotros.

Abrir issue en GitHub