Aprovechando nuestro tiempo de sesión, empecemos por la instalación.
Para el curso es necesario instalar dos herramientas:
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.
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.
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.<- 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.
Es común confundir R con RStudio, pero cumplen funciones diferentes.
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:
Podemos pensar en R como el motor que realiza el trabajo.
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:
Podemos pensar en RStudio como el panel de control que nos permite utilizar el motor R de manera eficiente.
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.
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.
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.
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.
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.
Ubicado generalmente en la parte inferior derecha.
Este panel reúne varias herramientas importantes:
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.
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
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.
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.
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 (%>%)
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.
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.
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.
| 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.
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.
1.53
## [1] 1.53
pi
## [1] 3.141593
numeric(length = 5)
## [1] 0 0 0 0 0
'Hola'
## [1] "Hola"
"Hola"
## [1] "Hola"
character(length = 2)
## [1] "" ""
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"
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
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
NA # not available
## [1] NA
NULL # no definido
## NULL
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 tipoDateusandoas.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
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"
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
Los usamos en tipos de dato enteros o numéricos.
2^3
## [1] 8
45/4
## [1] 11.25
45 %/% 4
## [1] 11
38 %% 6
## [1] 2
38/6
## [1] 6.333333
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
TRUE + 4
## [1] 5
FALSE * 9
## [1] 0
2 + NA
## [1] NA
7 / 0
## [1] Inf
-3 / 0
## [1] -Inf
# 'tres' + 2
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
'a' < 'b'
## [1] TRUE
'c' > 'm'
## [1] FALSE
'Sanchez' > 'Gonzalez'
## [1] TRUE
'agua' < 'abril'
## [1] FALSE
"A" < "a"
## [1] FALSE
& , 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
Al programar es importante asignar variables pues esto nos permite guardar la información para poder realizar operaciones.
Existen varias formas de crear variables:
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)