Email efmartinez@icesi.edu.co

Qries eduard-martinez

Qries @emartigo

Qries https://eduard-martinez.github.io


📊 En este capítulo el estudiante aprenderá una serie de prácticas para manejar bases de datos en R, siguiendo estándares claros y reproducibles.

📝 Se mostrará cómo organizar su repositorio, escribir scripts claros y bien documentados, manipular y estandarizar datos, y abordar proyectos de modelado estadístico desde la preparación hasta la interpretación de resultados.

Este capítulo es una guía práctica para que cualquier análisis sea entendible y reutilizable, ya sea por usted mismo en el futuro o por otros miembros de su equipo.

1 Organización del repositorio de trabajo

Una estructura clara y ordenada en el repositorio es esencial para mantener el control sobre los archivos y facilitar la navegación dentro del proyecto. Además, permite a cualquier miembro del equipo comprender rápidamente dónde encontrar datos, scripts o resultados, garantizando así la reproducibilidad, consistencia y facilidad de actualización.

1.1 Estructura de carpetas

📝 Buena práctica: Organice cada proyecto en carpetas numeradas, donde cada carpeta represente una tarea específica siguiendo el orden lógico de ejecución. Dentro de cada carpeta, incluir tres subcarpetas principales:

  • input/: datos originales o insumos requeridos para la tarea. En algunos casos, esta carpeta puede omitirse si los datos se obtienen de tareas anteriores.
  • code/: scripts numerados según el orden de ejecución.
  • output/: resultados generados, tales como bases de datos, gráficos, tablas o informes. Los nombres de los archivos deben indicar a qué script corresponden.

1.2 99_Others — Materiales complementarios

📝 Buena práctica: Incluya una carpeta llamada 99_Others para almacenar materiales o referencias que son relevantes para tu proyecto, pero que no forman parte directa del flujo de trabajo.

Esta carpeta puede contener:

  • Documentos PDF con estudios o artículos de referencia.

  • Tablas o gráficos informativos que no se procesan en el código.

  • Notas de reuniones o planeaciones de trabajo.

  • Capturas de pantalla o imágenes ilustrativas.

1.3 Archivo README

Un README es un archivo de texto que sirve como carta de presentación de tu proyecto. Se suele escribir en formato Markdown(.md), lo que permite agregar títulos, listas, enlaces e incluso imágenes de forma sencilla y legible tanto en GitHub como en editores de texto.

📝 Buena práctica: Incluya un archivo README.md en la carpeta raíz del proyecto. Este documento puede ofrecer los siguientes contenidos:

  • Una descripción general del proyecto.

  • El estado del proyecto, indicando si el proyecto está en desarrollo, en mantenimiento o finalizado. Menciona cambios planeados y la dirección futura del desarrollo. .

  • Bugs conocidos y posibles correcciones de errores..

  • Cualquier dependencia o paquete que se deba instalar.

💡 ¿Por qué es importante? Permite que cualquier persona —incluyéndote a ti en el futuro— entienda rápidamente cómo está organizado el proyecto y cómo ejecutarlo sin perder tiempo explorando carpeta por carpeta

📚 Así se verá su repositorio siguiendo la estructura propuesta en el manual:

📂 raiz_del_proyecto/
│
│── 📁 01_import_data/    
│      ├── code/          
│      ├── input/        
│      └── output/        
│
│── 📁 02_process_data/   
│      ├── code/          
│      └── output/      
│
│── 📁 03_descriptives/       
│      ├── input/         
│      └── output/  
│
│── 📁 04_reporting/       
│      ├── code/          
│      ├── input/         
│      └── output/  
│
│── 📁 99_others/            
│
│── README.md             
│── Desempleo_Cali.Rproj  

2 Buenas prácticas en los scripts

2.1 Encabezado

📝 Buena práctica: Documente cada script con información básica (autor, fecha, descripción) al inicio del archivo.

# Autor: Eduard Martínez
# Fecha de creación: 2025-08-08
# Última actualización: 2025-10-08
# Descripción: Estadísticas descriptivas sobre el desempleo en Cali.

2.2 Limpiar el entorno

📝 Buena práctica: Antes de iniciar un script, limpie el entorno para evitar que objetos previos interfieran con la ejecución.

cat("\f")   # Limpia consola
rm(list = ls())   # Elimina todos los objetos

2.3 Comentar el código

📝 Buena práctica: Documente el código con comentarios claros (#) para explicar cada sección y facilitar su comprensión.

# Calcular el promedio de la tasa de desempleo en Cali
promedio_desempleo <- mean(cali_data$desempleo, na.rm = TRUE)

# Mostrar un resumen estadístico de la tasa de desempleo en Cali
summary(cali_data$desempleo)

# Crear un histograma para visualizar la distribución de la tasa de desempleo
hist(cali_data$desempleo, main = "Distribución del desempleo en Cali",
     xlab = "Tasa de desempleo", col = "skyblue")

2.4 Cargar paquetes

📝 Buena práctica: Cargue todos los paquetes necesarios al inicio del script y verifica si están instalados, por ejemplo usando el paquete pacman.

# install.packages("pacman") Instalar el paquete si no lo tienes
library("pacman")
p_load(dplyr, tidyverse, readxl, ggplot2)

2.5 Separa el código en bloques lógicos con títulos visibles

📝 Buena práctica: Utilice líneas de separación y encabezados en comentarios para identificar rápidamente cada sección del script.

# --- Cargar paquetes ---
# --- Importar datos ---
# --- Procesar datos ---

2.6 Rutas relativas

📝 Buena práctica: Utilice rutas relativas para que el script funcione en cualquier equipo sin importar la ubicación exacta de los archivos.

# ❌ Ejemplo NO recomendado: ruta absoluta
# Esto hará que el código dependa de la estructura de tu computadora
datos <- read_csv("C:/Users/Eduard/Documents/mi_proyecto/data/datos.csv")

# ✅ Ejemplo recomendado: ruta relativa 
# ".." sube un nivel desde la carpeta actual
datos <- read_csv("../data/datos.csv")

💡 ¿Por qué es importante? Estas prácticas aseguran que el código sea claro, legible para ti como para cualquier persona que colabore o retome el proyecto en el futuro. Facilitan la trazabilidad, el mantenimiento y la reproducibilidad del análisis, evitando errores derivados de objetos o dependencias residuales. Además, optimizan el uso de memoria y recursos, y hacen que el script sea portátil y funcional en diferentes entornos sin necesidad de modificar rutas o configuraciones.

3 Manipulación y estandarización de datos

Adoptar convenciones claras para nombrar objetos y variables, así como estandarizar los formatos de datos, mejora la legibilidad, consistencia y reproducibilidad del código. Además, preservar los datos originales y trabajar siempre con copias limpias reduce el riesgo de pérdida o corrupción de información, permitiendo volver a la fuente cuando sea necesario.

3.1 📝 Buenas prácticas

  • Nombres claros y consistentes
    • Utilice nombres breves pero descriptivos.
    • Preferiblemente en minúsculas, evitando mezclar mayúsculas y minúsculas.
    • Sin espacios, tildes o caracteres especiales; use guion bajo _ para separar palabras.

El siguiente cuadro muestra una serie de funciones del paquete base para hacer transformaciones a los textos.

Función Descripción Ejemplo
tolower() Convierte todo el texto a minúsculas. tolower(“NombreCliente”) → “nombrecliente”
toupper() Convierte todo el texto a mayúsculas. toupper(“NombreCliente”) → “NOMBRECLIENTE”
gsub() Reemplaza un patrón de texto por otro dentro de un string. gsub(” “,”_“,”Fecha de Nacimiento”) → “Fecha_de_Nacimiento”
gsub() + tolower() Combinación común: minúsculas y reemplazar espacios por guiones bajos. gsub(” “,”_“, tolower(”Fecha de Nacimiento”)) → “fecha_de_nacimiento”

👀 Cada función no se aplica automáticamente a todo un data frame, sino únicamente al objeto que le pases como argumento.

  • Tipos de datos correctos
    • Números: numeric o integer sin símbolos extra.
    • Fechas: Date (YYYY-MM-DD).
    • Texto: character con codificación UTF-8 o ASCII para evitar errores de lectura en otros sistemas.
  • Preservar datos originales
    • Asigne nuevos nombres a los objetos después de importar datos para no sobrescribir el archivo original.
# Importar datos
clientes_raw <- read.csv("clientes.csv")
# Crear una copia para manipulación
clientes <- clientes_raw # Ahora se trabaja sobre 'clientes' sin modificar 'clientes_raw'

4 Proyectos con modelado estadístico

Los proyectos de modelado estadístico contemplan todo el proceso que va desde la recolección y preparación de datos hasta la ejecución de modelos y la interpretación de resultados. Este tipo de proyectos se utilizan para identificar patrones, probar hipótesis y realizar predicciones basadas en datos, y requieren un flujo de trabajo ordenado para garantizar la reproducibilidad y la transparencia de los análisis.

En la práctica, estos proyectos suelen implicar la combinación de diversas fuentes de información, la aplicación de técnicas de limpieza y transformación, y la ejecución de estimaciones o regresiones que permitan responder preguntas de investigación o resolver problemas del negocio.

📝 Buena práctica: En proyectos de modelado estadístico, mantener el repositorio dividido en cuatro carpetas principales ayuda a seguir de forma ordenada cada etapa del proceso: recolección y preparación de datos, análisis exploratorio, modelado y presentación de resultados. Esta estructura reduce errores, evita confusiones y documenta el flujo de trabajo de manera clara y reproducible.

  • 01_download_data/: Aquí se almacenan todas las bases de datos originales, tal y como fueron descargadas o recibidas.

  • 02_proces_data/: Contiene los scripts y las bases resultantes del proceso de limpieza y estandarización de las bases de datos. En esta etapa se corrigen errores, se estandarizan variables y formatos, y se eliminan duplicados o valores atípicos.

  • 03_combine_data/: Almacena los scripts y las bases que resultan de unir diferentes fuentes de información. Este paso es clave, ya que el modelado estadístico a menudo requiere integrar datos de naturaleza y formatos distintos.

  • 04_main_regressions/ Incluye los scripts que ejecutan modelos estadísticos (regresiones, modelos de predicción, análisis de series de tiempo, etc.) y los resultados generados. Se trabaja únicamente con bases limpias y listas para análisis.

💡 ¿Por qué es importante? Contar con una estructura clara y ordenada en proyectos de modelado estadístico garantiza que cada etapa del proceso se ejecute con rigor y de manera reproducible, minimizando errores y facilitando la interpretación y validación de resultados