Ciencia de Datos: Manejo y Visualización de Datos con R

Programa del curso — 6 sesiones × 2 horas

Autor/a

Manuel Spínola

Fecha de publicación

18 de marzo de 2026

1 Información general

Modalidad Virtual (sincrónica)
Fechas

Martes y jueves

5,7,12,14,19,21 de mayo 2026

Horario 17.00 a 19.00
Duración 6 sesiones × 2 horas
Plataforma Zoom
Instructor Manuel Spínola (mspinola@una.cr)
Contacto Yoselyn Díaz (asistentecontableicomvis@una.ac.cr)
Inversión $102,00

2 Descripción general

Trabajar con datos es una parte central de la ciencia, pero muchas veces el proceso de importar, limpiar, organizar y visualizar información consume más tiempo que el análisis mismo. Este curso enseña a usar R como herramienta para resolver esos problemas de forma eficiente y reproducible.

A lo largo de 6 sesiones de 2 horas, los participantes aprenderán a manejar bases de datos reales: desde la importación hasta la generación de reportes con gráficos y tablas profesionales. El énfasis está en la aplicación práctica: cada sesión parte de un problema concreto que cualquier persona que trabaja con datos ha enfrentado.

El curso está dirigido a estudiantes, profesionales y científicos con distintos niveles de experiencia. No se requiere experiencia previa en programación.


3 ¿Por qué R?

R es una de las herramientas más usadas en ciencia de datos, biología, ecología, economía y ciencias sociales. Entre sus ventajas:

  • Gratuito y de código abierto — sin licencias ni restricciones
  • Reproducible — el código documenta exactamente lo que se hizo con los datos
  • Versátil — desde manipulación de datos hasta modelos estadísticos avanzados y mapas
  • Comunidad activa — miles de paquetes y recursos de aprendizaje disponibles

4 Objetivos del curso

Al finalizar el curso, los participantes serán capaces de:

  • Importar datos desde Excel, CSV y otros formatos comunes
  • Limpiar, filtrar, transformar y resumir bases de datos
  • Combinar múltiples tablas de datos
  • Crear visualizaciones claras y publicables con ggplot2
  • Generar reportes reproducibles con tablas y gráficos en Quarto

5 Estructura del curso

Sesión Pregunta práctica Tema técnico
1 ¿Cómo empiezo a trabajar con mis datos en R? Fundamentos y entorno
2 ¿Cómo importo y entiendo mis datos? Importación y exploración
3 ¿Cómo filtro, resumo y respondo preguntas con mis datos? Transformación con dplyr
4 ¿Cómo junto y reestructuro mis bases de datos? tidyr y joins
5 ¿Cómo comunico mis datos visualmente? Visualización con ggplot2
6 ¿Cómo genero un reporte profesional con mis resultados? Tablas, gráficos interactivos y Quarto

6 Sesión 1 — ¿Cómo empiezo a trabajar con mis datos en R?

Duración: 2 horas

Problema que resuelve: Muchas personas evitan R porque no saben por dónde empezar. Esta sesión elimina esa barrera inicial y establece las bases para trabajar de forma organizada.

Objetivos:

  • Instalar y configurar R y RStudio
  • Organizar un proyecto de análisis de datos
  • Entender los objetos básicos de R

Contenidos:

  • ¿Qué es la ciencia de datos? El flujo de trabajo: datos → análisis → comunicación
  • R y RStudio: instalación y primeros pasos
  • Proyectos de R: por qué organizarse desde el inicio ahorra tiempo
  • La consola, los scripts y el entorno de trabajo
  • Tipos de objetos: vectores, data frames y listas
  • Operaciones básicas: asignación, indexación y funciones elementales
  • Introducción a Quarto como cuaderno de trabajo

Paquetes introducidos: base R, here

Ejercicio práctico: Crear un proyecto en RStudio, organizar las carpetas de trabajo, escribir un script con operaciones básicas y explorar un data frame con datos reales.


7 Sesión 2 — ¿Cómo importo y entiendo mis datos?

Duración: 2 horas

Problema que resuelve: Tengo mis datos en Excel o CSV y no sé cómo cargarlos en R. Una vez cargados, no sé si están bien o si tienen errores.

Objetivos:

  • Importar datos desde los formatos más comunes
  • Explorar la estructura y calidad de una base de datos
  • Detectar y manejar problemas comunes en los datos

Contenidos:

  • Importar cualquier formato con datawizard::data_read() — CSV, Excel, SPSS, Stata, SAS sin necesidad de recordar qué paquete usar para cada formato
  • Exportar con datawizard::data_write()
  • Primera exploración: glimpse(), summary(), head(), tail()
  • Descripción automática de variables con datawizard::describe_distribution()
  • Codebook automático con datawizard::data_codebook()
  • Problemas comunes: nombres de columnas inconsistentes, tipos incorrectos, espacios en blanco
  • Limpieza de nombres con janitor::clean_names()
  • Valores faltantes (NA): ¿cuántos hay? ¿dónde están? ¿qué hacer con ellos?
  • Tipos de variables: numéricas, categóricas (factor), fechas

Paquetes introducidos: datawizard, janitor

Ejercicio práctico: Importar una base de datos con problemas comunes (nombres inconsistentes, NAs, tipos incorrectos), diagnosticar los problemas y aplicar una limpieza básica.


8 Sesión 3 — ¿Cómo filtro, resumo y respondo preguntas con mis datos?

Duración: 2 horas

Problema que resuelve: Tengo una tabla con miles de filas y necesito extraer solo lo que me interesa, calcular totales por grupo, o crear nuevas columnas a partir de las existentes.

Objetivos:

  • Filtrar filas y seleccionar columnas
  • Crear nuevas variables y transformar existentes
  • Calcular resúmenes por grupo

Contenidos:

  • El pipe |>: encadenar pasos de análisis de forma legible
  • Verbos de dplyr orientados a tareas concretas:
    • filter() — “quiero solo las filas donde…”
    • select() — “quiero solo estas columnas”
    • mutate() — “quiero crear una nueva columna que…”
    • arrange() — “quiero ordenar por…”
    • group_by() + summarise() — “quiero calcular… por grupo”
  • count() — contar registros por categoría
  • across() — aplicar la misma operación a varias columnas
  • Casos de uso reales: calcular promedios por especie, crear índices, filtrar por fecha

Paquetes introducidos: dplyr

Ejercicio práctico: A partir de una base de datos de registros biológicos, responder preguntas concretas: ¿cuántos registros hay por especie? ¿cuál es la temperatura media por sitio? ¿qué especies tienen más de 10 registros?


9 Sesión 4 — ¿Cómo junto y reestructuro mis bases de datos?

Duración: 2 horas

Problema que resuelve: Tengo mis datos en varias tablas separadas y necesito combinarlas. O tengo una tabla en un formato que no sirve para graficar o analizar.

Objetivos:

  • Combinar tablas con joins
  • Transformar datos entre formato largo y ancho
  • Separar y unir columnas

Contenidos:

  • ¿Por qué los datos están en varias tablas? Bases de datos relacionales
  • Joins en dplyr con ejemplos visuales:
    • left_join() — “agrega información de otra tabla a la mía”
    • inner_join() — “quédate solo con los que están en ambas”
    • full_join() — “conserva todo aunque no haya coincidencia”
    • anti_join() — “quiero los que NO están en la otra tabla”
  • Datos en formato largo vs ancho: ¿cuándo usar cada uno?
  • pivot_longer() — preparar datos para ggplot2
  • pivot_wider() — crear tablas resumen
  • separate_wider_delim() y unite() — dividir y unir columnas

Paquetes introducidos: tidyr

Ejercicio práctico: Combinar una tabla de presencias de especies con una tabla de sitios usando left_join(), luego transformar los datos a formato largo para prepararlos para visualización.


10 Sesión 5 — ¿Cómo comunico mis datos visualmente?

Duración: 2 horas

Problema que resuelve: Necesito hacer gráficos claros y publicables que cuenten una historia con mis datos, no solo gráficos por defecto.

Objetivos:

  • Crear visualizaciones con ggplot2 usando la gramática de gráficos
  • Personalizar colores, temas y escalas
  • Comparar grupos con facetas

Contenidos:

  • La gramática de gráficos: datos + estéticas + geometrías
  • Estructura básica: ggplot(data, aes(x, y)) + geom_*()
  • Geometrías según el tipo de pregunta:
    • Distribuciones: geom_histogram(), geom_density(), geom_boxplot(), geom_violin()
    • Comparaciones: geom_col(), geom_bar()
    • Relaciones: geom_point(), geom_line(), geom_smooth()
  • Colores con significado: scale_fill_*(), scale_color_*()
  • Paletas: viridis, RColorBrewer, ggthemes
  • Temas: theme_minimal(), theme_classic()
  • Facetas para comparar grupos: facet_wrap(), facet_grid()
  • Títulos, etiquetas y anotaciones con labs() y annotate()

Paquetes introducidos: ggplot2, ggthemes, RColorBrewer

Ejercicio práctico: Crear tres gráficos que respondan preguntas concretas sobre una base de datos: una distribución, una comparación entre grupos y una relación entre dos variables. Personalizar colores y tema para uso en una presentación.


11 Sesión 6 — ¿Cómo genero un reporte profesional con mis resultados?

Duración: 2 horas

Problema que resuelve: Necesito entregar un informe, preparar una presentación o publicar mis resultados, y quiero que el documento se actualice automáticamente si los datos cambian.

Objetivos:

  • Componer múltiples gráficos en un panel
  • Crear gráficos interactivos
  • Generar tablas profesionales
  • Producir un reporte reproducible con Quarto

Contenidos:

  • Componer paneles de gráficos con patchwork
  • Exportar gráficos en alta resolución con ggsave()
  • Gráficos interactivos con plotly::ggplotly()
  • Tablas profesionales con tinytable: colores, formato y estilo
  • Estructura de un documento Quarto: YAML, texto Markdown y chunks de código
  • Opciones clave de chunks: echo, fig-cap, fig-width
  • Reportes dinámicos con params: el mismo documento para distintas especies, sitios o períodos
  • Formatos de salida: HTML, PDF, Word
  • Publicación en Quarto Pub o Netlify

Paquetes introducidos: patchwork, plotly, tinytable

Proyecto integrador: Cada participante genera un reporte reproducible en Quarto con sus propios datos (o un conjunto de datos de ejemplo), que incluye importación, limpieza, transformación, visualización y narrativa interpretativa.


12 Requisitos

  • Computadora personal con últimas versiones de R y RStudio instalados
  • Quarto instalado (quarto.org)
  • No se requiere experiencia previa en programación ni estadística

12.1 Instalación de paquetes

install.packages(c(
  "tidyverse",
  "easystats",
  "janitor",
  "ggthemes",
  "patchwork",
  "RColorBrewer",
  "plotly",
  "tinytable",
  "here"
))

13 Referencias

Wickham, H. (2014). Tidy Data. Journal of Statistical Software, 59(10), 1–23. https://doi.org/10.18637/jss.v059.i10

Wickham, H., Çetinkaya-Rundel, M. & Grolemund, G. (2023). R for Data Science (2nd ed.). O’Reilly. https://r4ds.hadley.nz

Wilkinson, L. (2005). The Grammar of Graphics (2nd ed.). Springer.

Allaire, J.J. et al. (2024). Quarto. https://quarto.org