Aprovechando nuestro tiempo de sesión, empecemos por la instalación.

Instalación de R y RStudio

Para el curso es necesario instalar dos herramientas:

  1. R, que es el lenguaje de programación que utilizaremos para el análisis de datos.
  2. RStudio, que es el entorno de trabajo que facilita la escritura, ejecución y organización del código en R.

Descarga R desde el sitio oficial de R CRAN.

Descarga RStudio desde el sitio oficial de Posit.

Importante: R debe instalarse antes que RStudio, ya que RStudio necesita detectar una instalación de R para funcionar correctamente.


Objetivo del curso

Desarrollar habilidades de pensamiento analítico utilizando R como herramienta de apoyo para la exploración, análisis e interpretación de datos.

El objetivo no es únicamente aprender comandos o ejecutar instrucciones, sino comprender cómo transformar datos en información útil para la toma de decisiones y la resolución de problemas.

No asumo que todos saben programación, pero sí asumo que todos pueden aprender a usarla bien. La idea no es memorizar código, vamos a entender cómo funciona, para que después puedan usarlo con seguridad ante cualquier problema al que se enfrenten en sus actividades de análisis.


Introducción a R

  • R (también conocido históricamente como GNU S) es un lenguaje de programación especializado en la manipulación, análisis y visualización de datos.

  • Fue desarrollado a partir del lenguaje S, uno de los sistemas más influyentes en la historia de la estadística computacional.

  • Actualmente, R es una de las herramientas más utilizadas en estadística, ciencia de datos, investigación científica, bioestadística, bioinformática y aprendizaje automatizado.

  • Además de realizar cálculos estadísticos, R permite crear programas, automatizar procesos, generar informes y desarrollar nuevas funciones adaptadas a necesidades específicas.

  • R es un lenguaje orientado a objetos. Esto significa que la información se organiza en estructuras llamadas objetos, las cuales almacenan datos y permiten trabajar con ellos de manera eficiente.

  • En R, prácticamente todo es un objeto: números, textos, vectores, tablas de datos, gráficos e incluso funciones.

  • Cada objeto posee un nombre que permite identificarlo y reutilizarlo durante el análisis.

Por ejemplo:

edad <- 25

En este caso:

  • edad es el nombre del objeto.
  • 25 es el valor almacenado.
  • El operador <- asigna el valor al objeto.

En resumen, R es software libre (la comunidad lo puede enriquecer) y se define como un entorno integrado para manipular datos, hacer cálculos y generar gráficos. Esa combinación es justamente lo que lo hace tan potente en análisis estadístico.


Diferencia entre R y RStudio

Es común confundir R con RStudio, pero cumplen funciones diferentes.

¿Qué es R?

R es el lenguaje de programación que interpreta y ejecuta nuestras instrucciones.

Cuando escribimos código, R procesa esas instrucciones y realiza tareas como:

  • Manipular datos.
  • Realizar análisis estadísticos.
  • Crear gráficos.
  • Generar modelos matemáticos.

Podemos pensar en R como el motor que realiza el trabajo.

¿Qué es RStudio?

RStudio es un entorno de desarrollo integrado (IDE, por sus siglas en inglés) diseñado para trabajar con R de forma más cómoda y organizada.

RStudio proporciona herramientas que facilitan:

  • La escritura y edición de código.
  • La ejecución de comandos.
  • La visualización de gráficos.
  • La administración de archivos y proyectos.
  • La instalación y gestión de paquetes.
  • La generación de informes reproducibles.

Podemos pensar en RStudio como el panel de control que nos permite utilizar el motor R de manera eficiente.

Una analogía sencilla

Si pensamos en una cocina:

R sería el chef que realiza el trabajo: prepara los ingredientes, cocina y produce el resultado final. RStudio sería la cocina equipada, con mesadas, hornallas, utensilios y espacio de trabajo que facilitan la tarea del chef.

Por sí solo, el chef puede cocinar; sin embargo, hacerlo en una cocina bien equipada resulta mucho más cómodo y eficiente.


Conociendo RStudio

Al abrir RStudio por primera vez observaremos que la pantalla está dividida en cuatro áreas principales llamadas paneles. Cada uno cumple una función específica y nos ayuda a organizar nuestro trabajo de análisis de datos.

1. Panel de Scripts (Source)

Ubicado generalmente en la parte superior izquierda.

Es el espacio donde escribimos, editamos y guardamos nuestro código. Trabajar desde scripts nos permite conservar nuestro trabajo y reutilizarlo posteriormente sin tener que volver a escribir las instrucciones.

En este curso, la mayor parte del código será escrita en este panel o dentro de documentos R Markdown.

2. Consola (Console)

Ubicada normalmente en la parte inferior izquierda.

La consola es el lugar donde R ejecuta nuestras instrucciones. Podemos escribir comandos directamente y obtener resultados de manera inmediata.

Por ejemplo: 2+2

La consola también muestra mensajes, advertencias y errores que nos ayudan a comprender lo que está ocurriendo durante la ejecución del código.

3. Entorno e Historial (Environment / History)

Ubicado generalmente en la parte superior derecha.

El panel Environment muestra todos los objetos creados durante la sesión de trabajo, tales como variables, vectores, tablas de datos y funciones.

La pestaña History almacena un registro de los comandos ejecutados previamente.

4. Miscelánea

Ubicado generalmente en la parte inferior derecha.

Este panel reúne varias herramientas importantes:

  • Files: permite explorar carpetas y archivos.
  • Plots: muestra los gráficos generados por R.
  • Packages: permite instalar y administrar paquetes.
  • Help: proporciona acceso a la documentación de funciones y paquetes.
  • Viewer: muestra contenido interactivo y aplicaciones web desarrolladas en R.

Una vez instalados R y RStudio, estamos listos para comenzar a trabajar con datos.

A lo largo del curso aprenderemos las estructuras fundamentales de R y las herramientas más utilizadas para la manipulación, visualización y análisis de información. Cada tema servirá de base para el siguiente, permitiendo construir gradualmente habilidades de análisis de datos y programación.


Temario del curso

I. Introducción a R

Aquí vamos a empezar desde cero con el lenguaje. Primero cosas simples: operaciones, variables, tipos de datos… pero esto no es trivial. Si desde el inicio entienden cómo R guarda y procesa información, todo lo demás va a fluir mucho más fácil.

Operaciones Aritméticas Variables Tipos de datos Vectores Operaciones con vectores Operadores de Comparación

II. Matrices

Aquí damos un paso más estructurado. Las matrices nos ayudan a organizar datos numéricos y, sin decirlo todavía en profundidad, nos acercan a la base matemática de muchos modelos.

Acceso a elementos por índices. Operaciones básicas con matrices. Funciones útiles para matrices.

III. Data Frames

Aquí ya entramos al mundo real. Los data frames son como las tablas que conocen, pero con más flexibilidad. Aprenderemos a importar datos y empezar a explorarlos de verdad.

¿Qué es un data frame? Diferencias con matrices. Creación de data frames. Importación desde archivos externos. Acceso a columnas y filas. Operaciones básicas. Funciones comunes.

IV. Manipulación de datos con dplyr

empezamos a trabajar como analistas. Filtrar, agrupar, resumir… básicamente empezar a transformar datos para responder preguntas.

¿Qué es dplyr y por qué usarlo? Principales Verbos de dplyr Uso del Operador Pipe (%>%)

V. Listas

estructuras más flexibles. Las listas nos permiten guardar casi cualquier cosa, incluso modelos completos.

Creación de listas con list(). Acceso a elementos de listas. Modificación de elementos en listas.

VI. Visualización de Datos

Aprenderemos a hacer gráficos claros, no solo bonitos, sino que realmente ayuden a entender patrones.

Introducción a gráficos base en R. Creación de gráficos básicos. Personalización de gráficos: títulos, ejes, colores, y leyendas. Breve introducción a ggplot2 para gráficos avanzados.

VII. Introducción a Machine Learning

Estos métodos constituyen herramientas fundamentales del análisis de datos y la modelación estadística. Mientras que la Regresión Lineal y la Regresión Logística permiten modelar y predecir el comportamiento de una variable de interés, el Análisis Discriminante ayuda a diferenciar y clasificar observaciones en grupos. Por su parte, el Análisis de Componentes Principales facilita la exploración y simplificación de datos con muchas variables, y los Árboles de Decisión junto con Random Forest ofrecen enfoques flexibles para descubrir patrones y generar predicciones mediante estructuras basadas en reglas.

Regresión Lineal Regresión Logística Análisis de Discriminación Análisis de Componentes Principales Árboles de Decisión Random Forest


Nota: Las actividades del curso se desarrollarán en archivos R Markdown, un formato que permite combinar texto, código, resultados y gráficos en un único documento reproducible. Esta metodología facilita la documentación del análisis y favorece buenas prácticas de trabajo en ciencia de datos.


Guía rápida de R Markdown

Elemento Sintaxis / Atajo
Título principal # Título
Sección ## Sección
Subsección ### Subsección
Negrita **texto**
Cursiva *texto*
Lista - Elemento
Nota > Nota importante
Enlace [Texto](https://sitio.com)
Separador ***
Chunk de código R Ctrl + Alt + I
Comentar / descomentar líneas Ctrl + Shift + C

No es necesario memorizar esta sintaxis, se volverá familiar con la práctica.


Tipos de datos

Entero

1L
## [1] 1
# La L viene de Long integer
# Señala que el número debe interpretarse como un entero (integer) y no como un valor de doble precisión (double).

Comentarios en R: Usamos # para agregar notas o explicaciones dentro de los chunks de código. Los comentarios no son ejecutados por R.


Numérico

1.53
## [1] 1.53
pi
## [1] 3.141593
numeric(length = 5)
## [1] 0 0 0 0 0


Cadenas

'Hola'
## [1] "Hola"
"Hola"
## [1] "Hola"
character(length = 2)
## [1] "" ""


Vector

Existen objetos que pueden almacenar más de un valor. La función c() permite combinar elementos en un vector.

c(1,2)
## [1] 1 2
c("Hola","amigo")
## [1] "Hola"  "amigo"

Factor

Normalmente se describen como datos numéricos pero almacenan datos categórios (variables cualitativas).

factor(c("mujer","mujer","mujer","hombre"))
## [1] mujer  mujer  mujer  hombre
## Levels: hombre mujer


Levels ayuda a clasificar categorías que incluso podrían no estar en la muestra.

factor(c("mujer","mujer","mujer","mujer"),levels=c("hombre","mujer"))
## [1] mujer mujer mujer mujer
## Levels: hombre mujer


Labels permite modificar los nombres de los niveles de factores.

factor(c("mujer","mujer","mujer","mujer"),levels=c("hombre","mujer"),labels=c("H","M"))
## [1] M M M M
## Levels: H M


Pueden tener un orden.

factor(c(1,2,3))
## [1] 1 2 3
## Levels: 1 2 3
factor(c("Bajo","Medio","Alto"))
## [1] Bajo  Medio Alto 
## Levels: Alto Bajo Medio


O no…

# 0 Estudiante
# 1 Profesor
factor(c(0,1))
## [1] 0 1
## Levels: 0 1


También podemos fijar un orden conveniente.

factor(
  c("Bajo","Medio","Alto"),
  levels = c("Bajo","Medio","Alto"),
  ordered = TRUE
)
## [1] Bajo  Medio Alto 
## Levels: Bajo < Medio < Alto
# R interpreta: Bajo < Medio < Alto


Lógico

Se basan principalmente en dos valores: TRUE (verdadero) y FALSE (falso). Pueden abreviarse como T y F (no recomendable), y se obtienen mediante comparaciones lógicas.

TRUE
## [1] TRUE
FALSE
## [1] FALSE
2<3
## [1] TRUE
3<2
## [1] FALSE
T <- FALSE
T
## [1] FALSE


Perdidos y vacíos

NA # not available
## [1] NA
NULL # no definido
## NULL


Fechas

Las definiremos en formato AAAA-MM-DD.

as.Date("2026-02-17")
## [1] "2026-02-17"


A través de class() podemos determinar qué tipo de dato es un objeto.

Esto es útil cuando tenemos que verificar la entrada que se pasa a una función escrita por nosotros y así evitar que se pasen objetos de un tipo incorrecto.

class(8L)
## [1] "integer"
class(99)
## [1] "numeric"
class("Hola")
## [1] "character"
class(factor(c(1,2)))
## [1] "factor"
class(FALSE)
## [1] "logical"
class("2026-02-17")
## [1] "character"
class(as.Date("2026-02-17"))
## [1] "Date"
class(T)
## [1] "logical"

Advertencia: El valor "2026-02-17" no es una fecha para R, sino una cadena de texto. Para trabajar con fechas debe convertirse al tipo Date usando as.Date("2026-02-17").


Y se puede preguntar por un tipo de datos en particular. La respuesta será un dato tipo lógico.

# ¿Es entero?
is.integer(1)
## [1] FALSE
is.integer(1L)
## [1] TRUE


# ¿Qué es pi?
is.integer(pi)
## [1] FALSE
is.numeric(pi)
## [1] TRUE


# ¿Es texto?
is.character(1)
## [1] FALSE
is.character('1')
## [1] TRUE


# ¿Lógicos?
isTRUE(3<1)
## [1] FALSE
isTRUE(TRUE)
## [1] TRUE
isTRUE(T)
## [1] FALSE
isTRUE(F)
## [1] FALSE
isFALSE(FALSE)
## [1] TRUE


# ¿Factores o perdidos?
is.factor(c(1,2))
## [1] FALSE
is.factor(factor(c(1,2)))
## [1] TRUE
is.na(NA)
## [1] TRUE
is.null(NULL)
## [1] TRUE


# ¿Fechas?
# is.Date no existe :c
is(as.Date("2026-02-17"),"Date")
## [1] TRUE


Coerción implícita

Al ejecutar una operación, R intentará transformar el tipo de dato original al tipo que permita realizar la operación.

Sin embargo, si este proceso falla obtendremos un error.

TRUE + TRUE
## [1] 2
class(TRUE)
## [1] "logical"
class(TRUE+TRUE)
## [1] "integer"
TRUE / TRUE
## [1] 1
class(TRUE/TRUE)
## [1] "numeric"
paste(TRUE/TRUE,"si")
## [1] "1 si"
class(paste(TRUE/TRUE,"si"))
## [1] "character"


Coerción explícita

Aquí el programador convierte manualmente el dato usando funciones específicas.

# Coerción explícita numérica
as.integer(FALSE)
## [1] 0
as.integer('3')
## [1] 3
class(as.integer('3'))
## [1] "integer"
# as.integer("tres")


# Coerción explícita cadena
as.character(TRUE)
## [1] "TRUE"
as.character(3)
## [1] "3"


# Coerción explícita lógica
as.logical(1)
## [1] TRUE
as.logical(3)
## [1] TRUE
as.logical(-1)
## [1] TRUE
as.logical(0) # solo este regresa FALSE
## [1] FALSE
as.logical("true")
## [1] TRUE
as.logical("false")
## [1] FALSE


# Coerción explícita factor
as.factor(c(1,2))
## [1] 1 2
## Levels: 1 2
as.factor("hola")
## [1] hola
## Levels: hola



Operadores

Operadores aritméticos

Los usamos en tipos de dato enteros o numéricos.

“ + ” , por medio de este símbolo es que efectuamos una suma.

“ - ” , por medio de este símbolo es que efectuamos una resta.

“ * ” , por medio del asterisco es que efectuamos una multiplicación.

“ / ” , por medio de la diagonal es que efectuamos una división.


“^” , por medio de este símbolo es que efectuamos una potencia

2^3
## [1] 8


“%/%” , por medio de este símbolo es que efectuamos una división entera

45/4
## [1] 11.25
45 %/% 4
## [1] 11


“%%” , por medio de este símbolo es que obtenemos el módulo

38 %% 6
## [1] 2
38/6
## [1] 6.333333


Jerarquía de operaciones

Se aplica la regla nemotécnica PEMDAS: Paréntesis, Exponentes, Multiplicación y División (izquierda a derecha), y Adición/Suma y Sustracción/Resta (izquierda a derecha).

(4*6)+2
## [1] 26
4*(6+2)
## [1] 32
4+6*2
## [1] 16


Operaciones ariméticas y coerción implícita

TRUE + 4
## [1] 5
FALSE * 9
## [1] 0
2 + NA
## [1] NA
7 / 0
## [1] Inf
-3 / 0
## [1] -Inf
# 'tres' + 2



Operadores relacionales

Devuelven un tipo de dato lógico luego de hacer comparaciones.

2 < 3 # ¿menor que?
## [1] TRUE
2 > 3 # ¿mayor que?
## [1] FALSE
2 <= 3 # ¿menor o igual que?
## [1] TRUE
3 >= 3 # ¿mayor o igual que?
## [1] TRUE
2 == 3 # ¿iguales?
## [1] FALSE
2 != 3 # ¿distintos?
## [1] TRUE

Operadores relacionales con cadenas (comparación alfabética)

'a' < 'b'
## [1] TRUE
'c' > 'm'
## [1] FALSE
'Sanchez' > 'Gonzalez'
## [1] TRUE
'agua' < 'abril'
## [1] FALSE
"A" < "a"
## [1] FALSE

Operadores lógicos

  • & , significa “y” (conjunción)

Sean P y Q dos proposiciones o condiciones, ent.

P Q P & Q
TRUE TRUE TRUE
TRUE FALSE FALSE
FALSE TRUE FALSE
FALSE FALSE FALSE

Notemos que una conjunción es verdadera únicamente cuando ambas condiciones se cumplen o son verdaderas, en cualquier otro caso es falsa.

TRUE & FALSE
## [1] FALSE
3 < 1 & 4 > 2
## [1] FALSE


  • | , significa “o” (disyunción)

Sean P y Q dos proposiciones o condiciones, ent.

P Q P
TRUE TRUE TRUE
TRUE FALSE TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE

Una disyunción es verdadera siempre y cuando al menos una de las proposiciones o condiciones sea verdadera, por otro lado, solo es falsa si ambas condiciones lo son.

TRUE | FALSE
## [1] TRUE
3 < 1 | 4 > 2
## [1] TRUE


  • ! , significa “no” (negación). Al aplicar este operador se cambia el valor guardado en una variable lógica. Sean P una proposición o condición, ent.
P !P
TRUE FALSE
FALSE TRUE
!TRUE
## [1] FALSE
!( 3 < 1)
## [1] TRUE



Operadores de asignación

Al programar es importante asignar variables pues esto nos permite guardar la información para poder realizar operaciones.

Existen varias formas de crear variables:

  • a = 6
  • a ← 6 Es la forma más usada por convención del lenguaje R
  • 6 → a
  • assign(“a”,6)
  • a ← b ← 6

Después de correr estas líneas de código, las variables quedan guardadas en nuestro espacio de trabajo.

dado <- 6
dado
## [1] 6


dado2 <- 2
dado2
## [1] 2


5 -> dado3
dado3
## [1] 5


dado + dado2
## [1] 8


dado <- dado2 <- dado3 <- 25
dado2
## [1] 25


assign("dado",1000)
dado
## [1] 1000


exists("dado3")
## [1] TRUE
rm(dado3)
exists("dado3")
## [1] FALSE


ls()
## [1] "dado"  "dado2" "edad"  "T"


rm(list=ls())
ls()
## character(0)