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.
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.
📝 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.📝 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.
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
📝 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.
📝 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
📝 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")
📝 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)
📝 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 ---
📝 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.
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.
_ 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.
numeric o integer sin símbolos
extra.Date (YYYY-MM-DD).character con codificación UTF-8 o ASCII para
evitar errores de lectura en otros sistemas.# 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'
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