Unidad 1 - Práctica: tu primer script en R
Aplicación guiada en clase · Semana 3 · 06278-ECO
1 Reglas de juego
Esta sesión asume que ya estudiaste la teoría
Aquí no volvemos a explicar qué es un objeto, un vector o un data frame: eso quedó en el video (y su versión escrita interactiva) y en el quiz. Hoy esos conceptos se usan — vas a escribir, ejecutar y depurar tu primer script real. Si un término se te escapa, el glosario queda a un clic.
Lo que necesitas ahora mismo:
- 💻 RStudio instalado y funcionando (lo pedía la teoría). ¿No alcanzaste? Plan B mientras lo resuelves: posit.cloud corre RStudio en el navegador.
- 🧑🤝🧑 Un compañero: esta práctica se trabaja en parejas — un computador escribe, el otro lee los resultados y cuestiona; cambien de rol en cada sección.
El plan de hoy: primero le hablas a R por la consola, luego mueves esa conversación a un script (la diferencia lo es todo); creas objetos y aprendes a vigilarlos en el Environment; construyes tu primer vector y tu primera tabla con preguntas de negocio; rompes cosas a propósito para perderle el miedo a los errores; cargas tu primera librería; y cierras creando el proyecto que usarás todo el semestre.
2 La consola: hola, R ≈ 10 min
Abre RStudio. Ubica la consola (panel izquierdo/inferior izquierdo, el del símbolo >). Escribe estas tres órdenes, una por una, presionando Enter después de cada una:
# 1. El precio final de un producto de $48.000 con IVA del 19%
48000 * 1.19
# 2. ¿Cuánto creció una tienda que pasó de vender 34 a 41 millones? (en %)
(41 - 34) / 34 * 100
# 3. ¿Ese crecimiento superó la meta del 15%?
(41 - 34) / 34 * 100 > 15Checkpoint 🎯: debes ver 57120, 20.58824 y TRUE. Fíjate en la tercera: le hiciste a R una pregunta de negocio y respondió con un lógico.
Ahora la parte incómoda, a propósito: presiona la flecha arriba en la consola. R te muestra el último comando. Así se navega el historial… pero imagina reconstruir un análisis de 50 pasos a punta de flechita. Por eso existe el script.
3 El script: tu análisis con memoria ≈ 10 min
Crea tu primer script: File → New File → R Script (o Ctrl/Cmd + Shift + N). Se abre el panel Source, arriba de la consola. Escribe esto (¡escríbelo, no lo pegues! — hoy las manos aprenden):
## ============================================
## Práctica semana 3 — Mi primer script
## Nombres: _______________ y _______________
## Fecha: _______________
## ============================================
##=== 1. R como calculadora ===##
# Precio con IVA
48000 * 1.19
# Crecimiento de la tienda (%)
(41 - 34) / 34 * 100Ahora ejecuta línea por línea: deja el cursor sobre una línea y presiona Ctrl + Enter (Windows) o Cmd + Enter (Mac). Mira cómo cada línea “viaja” a la consola y deja su resultado.
Guarda el archivo (Ctrl/Cmd + S) como practica_semana3.R — por ahora en el Escritorio; al final de la clase le daremos un mejor hogar.
La regla que empieza hoy y no se negocia
Todo lo que valga la pena conservar se escribe en el script y se ejecuta con Ctrl/Cmd + Enter. La consola es para probar y descartar. Un buen analista puede borrar su Environment completo, correr su script de arriba a abajo, y llegar exactamente al mismo resultado — esa es la prueba de fuego de la reproducibilidad.
Nota los comentarios (#): R los ignora, tu compañero no. Desde hoy, cada bloque de tu script lleva un comentario que dice qué hace y, cuando no sea obvio, por qué.
4 Objetos bajo vigilancia ≈ 12 min
Agrega una sección nueva a tu script y ejecútala línea por línea. Después de cada asignación, mira el panel Environment (arriba a la derecha): vas a ver aparecer cada objeto con su valor.
##=== 2. Objetos ===##
# El negocio: una tienda de accesorios
precio_sin_iva <- 48000
tasa_iva <- 0.19
unidades_mes <- 350
# Objetos construidos con otros objetos
precio_final <- precio_sin_iva * (1 + tasa_iva)
ingreso_mes <- precio_final * unidades_mes
# ¿Cuánto vendimos en el mes?
ingreso_mesCheckpoint 🎯: el Environment debe mostrar 5 objetos y ingreso_mes debe ser 19992000 (casi 20 millones).
Ahora radiografía lo que creaste:
# Las lupas de la teoría, aplicadas
class(precio_final)
class(precio_final > 50000)
str(ingreso_mes)Ahora ustedes 🧑🤝🧑: sin borrar nada, agreguen un objeto costo_unitario de 31000 y calculen margen_mes (ingreso del mes menos costo de las 350 unidades). ¿Da positivo el negocio? (Respuesta esperada: 9.142.000 — si les dio negativo, revisen el orden de las operaciones.)
El reflejo que estás entrenando: escribir → ejecutar → mirar la consola → mirar el Environment. Cuatro pasos, siempre. Si el objeto no apareció o el número no cuadra, se corrige antes de seguir — los errores en cadena nacen de no revisar a tiempo.
5 Tu primer vector con preguntas de negocio ≈ 15 min
La tienda te pasa sus ventas diarias de la semana pasada. Agrégalas a tu script:
##=== 3. Vectores ===##
# Ventas de lunes a domingo (miles de pesos)
ventas_dia <- c(1200, 1500, 1100, 1800, 2000, 1300, 1700)
# Radiografía rápida
length(ventas_dia)Y ahora respóndele al dueño, línea por línea:
# a) ¿Cuánto vendimos en la semana?
sum(ventas_dia)
# b) ¿Cuál fue el promedio diario?
mean(ventas_dia)
# c) ¿Cuál fue el mejor día? (posición 1 = lunes ... 7 = domingo)
which.max(ventas_dia)
# d) ¿Qué días superaron el promedio? (indexación lógica)
ventas_dia[ventas_dia > mean(ventas_dia)]
# e) ¿CUÁNTOS días superaron el promedio?
sum(ventas_dia > mean(ventas_dia))Checkpoint 🎯: total 10600, promedio 1514.286, mejor día el 5 (viernes), y 3 días por encima del promedio.
Última vuelta: el dueño avisa que el dato del miércoles estaba mal digitado — fueron 1400, no 1100:
# f) Corregir el dato del miércoles (posición 3) y recalcular el total
ventas_dia[3] <- 1400
sum(ventas_dia)Ahora ustedes 🧑🤝🧑: ¿el nuevo total superó la meta semanal de 10800? Escriban una sola línea que devuelva TRUE o FALSE. Luego: ¿cuántos días quedaron ahora por encima del promedio recalculado?
6 Tu primera tabla ≈ 15 min
Las ventas por día están bien, pero el negocio real tiene productos. Construye tu primera tabla de tres columnas:
##=== 4. Data frames ===##
inventario <- data.frame(
producto = c("Audífonos", "Cargador", "Forro", "Cable USB", "Soporte"),
precio = c(85000, 32000, 25000, 18000, 41000),
unidades = c(12, 40, 55, 70, 8)
)
# La radiografía completa, SIEMPRE, apenas nace una tabla
str(inventario)
dim(inventario)
head(inventario)Checkpoint 🎯: str() debe reportar 5 obs. of 3 variables, con producto como chr y las otras dos como num. En el Environment, inventario aparece en la sección Data — dale clic y RStudio te la muestra como hoja de cálculo (el visor sirve para mirar, no para editar: los cambios se hacen con código).
Ahora explótala:
# a) La columna precio es un vector: ¿precio promedio del inventario?
mean(inventario$precio)
# b) ¿Qué productos tienen menos de 20 unidades? (filtro por condición)
inventario[inventario$unidades < 20, ]
# c) Nueva columna: plata invertida en cada producto
inventario$valor_stock <- inventario$precio * inventario$unidades
# d) ¿Qué producto concentra más plata en bodega?
inventario[which.max(inventario$valor_stock), ]Checkpoint 🎯: el filtro (b) devuelve 2 productos (Audífonos y Soporte); el producto con más valor en stock (d) es el Forro (1.375.000 — mucha unidad barata le gana a poca unidad cara: primera lección de inventarios).
Ahora ustedes 🧑🤝🧑: respondan con una línea cada una — (1) ¿cuál es el valor total de la bodega?, (2) ¿cuántos productos tienen precio mayor a 30000?, (3) muestren la tabla solo con las filas cuyo valor_stock supere el millón. (Respuestas: 5.263.000 · 3 productos · 4 filas.)
7 Rompe cosas a propósito ≈ 12 min
Un analista que no sabe leer errores depende de la suerte. Vamos a provocarlos en ambiente controlado. Escribe y ejecuta cada caso, lee el mensaje completo en voz alta con tu pareja, y clasifícalo: ¿warning o error?
##=== 5. Laboratorio de errores ===##
# Caso 1: aparece un dato faltante en las ventas
ventas_con_na <- c(1200, 1500, NA, 1800)
mean(ventas_con_na)¿Qué devolvió? ¿Hubo alerta roja? (No: devolvió NA en silencio — el caso más traicionero.) Arréglalo:
mean(ventas_con_na, na.rm = TRUE)# Caso 2: pedir un objeto que no existe
ingreso_anual# Caso 3: el clásico de columnas mal importadas
"48000" + 1000Para discutir en pareja (30 segundos por caso): ¿en cuál de los tres casos R se detuvo por completo? ¿En cuál corrió pero el resultado no sirve? ¿Cuál mensaje te dice exactamente cómo corregir?
🤖 Momento IA: estrena tu skill
En la práctica pasada construiste el skill Explicador de código R. Úsalo de verdad: pégale a tu asistente el Caso 3 completo — código y mensaje de error — y pídele que explique la causa antes de dar la solución (así lo diseñaste). Luego verifica: ¿la explicación coincide con lo que dice la teoría sobre tipos de datos?
Este es el flujo que usarás todo el semestre: intento → leo el error → consulto (ayuda o IA) → entiendo → corrijo. La IA acelera el paso 3; los pasos 4 y 5 son tuyos.
8 Tu primera librería ≈ 8 min
La próxima semana necesitaremos dplyr y ggplot2. Dejemos todo instalado hoy, que hay tiempo y wifi.
Paso 1 — instalar (en la CONSOLA, no en el script): esto se hace una sola vez por computador.
install.packages("pacman")Verás mensajes de descarga; espera a que la consola vuelva a mostrar el >.
Paso 2 — cargar (en el SCRIPT): agrega el encabezado estándar del curso y ejecútalo.
##=== 6. Librerías ===##
# El encabezado que llevarán todos nuestros scripts:
require(pacman)
p_load(dplyr, ggplot2) # carga; y si falta alguno, lo instala soloCheckpoint 🎯: en el panel Packages (abajo a la derecha), busca dplyr: debe aparecer con el check activado. Ese check es la diferencia entre instalado y cargado, en vivo.
¿install.packages falló? Pasa: red del campus, permisos, antivirus. Respira y aplica el protocolo: lee el mensaje, y pídele el diagnóstico a tu asistente con el error completo. Si no sale en 3 minutos, levanta la mano — que la instalación no se coma la clase.
9 Cierre: el proyecto del semestre ≈ 10 min
Mira tu Environment: está lleno de objetos que morirán al cerrar RStudio. ¿Y tu análisis? Sobrevive, porque vive en el script. Solo falta darle una casa permanente — la que dice la teoría:
- File → New Project → New Directory → New Project. Nombre:
intro_ba. Ubicación: tu carpeta de la universidad (no Descargas). Clic en Create Project — RStudio se reinicia dentro del proyecto. - En el panel Files, crea tres carpetas con el botón New Folder:
data,scripts,output. - Trae tu script: File → Save As… → guárdalo en
scripts/comopractica_semana3.R(la copia del Escritorio ya puede morir). - Verifica dónde está parado R:
getwd()Debe terminar en /intro_ba. Desde hoy, toda ruta que escribas será relativa a esa carpeta: data/archivo.csv, output/grafico.png. Nada de C:/Users/....
Por qué esto importa (la moraleja de toda la sesión)
- El Environment es memoria de corto plazo: se borra al cerrar.
- El script es la memoria de largo plazo: reconstruye todo, en orden, con comentarios.
- El proyecto hace que ese script corra igual en tu portátil, en el del monitor o en el del profesor — porque las rutas son relativas.
Environment + script + proyecto = análisis reproducible. Este trío es, literalmente, la “buena práctica inicial” sobre la que se montará el proyecto final del curso.
Prueba de fuego antes de irte al taller 🧪: con el proyecto abierto, ejecuta rm(list = ls()) en la consola (borra TODO el Environment)… y ahora corre tu script completo de arriba a abajo (botón Source, o Ctrl/Cmd + Shift + Enter). Si al final el Environment se repobló y no hubo errores: felicitaciones, tu primer script es reproducible.
Siguiente parada → el Taller 3: R desde cero, que resolverás individualmente con lo que acabas de practicar. Todo lo que necesitas ya está en tu cabeza, en tu script y en la teoría.