Variables Básicas

En esta sección realizamos operaciones aritméticas fundamentales en R.

# -------------------------
# Variables básicas
# -------------------------

x <- 3
y <- 2

x
## [1] 3
y
## [1] 2
suma <- x + y
suma
## [1] 5
resta <- x - y
resta
## [1] 1
multiplicacion <- x * y
multiplicacion
## [1] 6
division <- x / y
division
## [1] 1.5
residuo <- x %% y
residuo
## [1] 1
division_entera <- x %/% y
division_entera
## [1] 1
potencia <- x^y
potencia
## [1] 9

Vectores

Creación y manipulación de vectores numéricos usando diferentes métodos.

# -------------------------
# VECTORES
# -------------------------

# Crear vector manualmente
v1 <- c(1, 2, 3, 4, 5)
v1
## [1] 1 2 3 4 5
# Vector usando :
v2 <- 1:10
v2
##  [1]  1  2  3  4  5  6  7  8  9 10
# Vector con seq()
v3 <- seq(from = 0, to = 20, by = 5)
v3
## [1]  0  5 10 15 20
# Secuencia con longitud fija
v4 <- seq(from = 0, to = 1, length.out = 5)
v4
## [1] 0.00 0.25 0.50 0.75 1.00

Repeticiones

Uso de la función rep() para generar secuencias repetitivas.

# -------------------------
# REPETICIONES con rep()
# -------------------------

# Repetir cada elemento
rep1 <- rep(c(1, 2, 3), each = 2)
rep1
## [1] 1 1 2 2 3 3
# Repetir el vector completo
rep2 <- rep(c(1, 2, 3), times = 3)
rep2
## [1] 1 2 3 1 2 3 1 2 3
# Repetir hasta cierta longitud
rep3 <- rep(1:3, length.out = 10)
rep3
##  [1] 1 2 3 1 2 3 1 2 3 1

Operaciones Vectorializadas

R permite realizar operaciones elemento a elemento de forma eficiente.

# -------------------------
# OPERACIONES VECTORIALIZADAS
# -------------------------

a <- c(1, 2, 3)
b <- c(10, 20, 30)

a + b
## [1] 11 22 33
a - b
## [1]  -9 -18 -27
a * b
## [1] 10 40 90
a / b
## [1] 0.1 0.1 0.1
# Escalar contra vector
a * 2
## [1] 2 4 6

Funciones Básicas

Funciones estadísticas descriptivas básicas aplicadas a vectores.

# -------------------------
# FUNCIONES BÁSICAS
# -------------------------

mean(v1)
## [1] 3
sum(v1)
## [1] 15
max(v1)
## [1] 5
min(v1)
## [1] 1
length(v1)
## [1] 5
sd(v1)
## [1] 1.581139

Indexación y Filtrado

Acceso a elementos específicos y filtrado mediante condiciones lógicas.

# -------------------------
# INDEXACIÓN
# -------------------------

v1[1] # primer elemento
## [1] 1
v1[2:4] # rango
## [1] 2 3 4
v1[-1] # quitar primer elemento
## [1] 2 3 4 5
v1[v1 > 3] # filtrado lógico
## [1] 4 5
# -------------------------
# VECTORES LÓGICOS
# -------------------------

logico <- v1 > 3
logico
## [1] FALSE FALSE FALSE  TRUE  TRUE
# Filtrado con vector lógico
v1[logico]
## [1] 4 5

Visualización

Ejemplo de gráfica de líneas mostrando la evolución del PIB.

# -------------------------
# GRÁFICA DEL PIB DE MÉXICO (2020-2025)
# -------------------------

anios <- 2020:2025
pib_mexico <- c(1.09, 1.29, 1.46, 1.79, 1.85, 1.91) # Valores aproximados en billones de USD

plot(anios, pib_mexico,
    type = "b", col = "darkgreen", lwd = 2, pch = 19,
    main = "Evolución del PIB de México",
    xlab = "Año", ylab = "Billones de USD"
)

Data Frames y Estadísticas

Manipulación de estructuras de datos tabulares (Data Frames) y cálculo de medidas de dispersión.

# -------------------------
# DATA FRAME DE PERSONAS
# -------------------------

df_personas <- data.frame(
    persona = c("Juan", "María", "Pedro", "Ana"),
    altura = c(1.75, 1.62, 1.80, 1.65),
    peso = c(75, 60, 85, 58)
)

# Peso máximo
max_peso <- max(df_personas$peso)
max_peso
## [1] 85
# Persona con menor estatura
persona_min_altura <- df_personas$persona[which.min(df_personas$altura)]
persona_min_altura
## [1] "María"

Medidas de Dispersión

# -------------------------
# MEDIDAS DE DISPERSIÓN
# -------------------------

# Desviación estándar
sd_altura <- sd(df_personas$altura)
sd_peso <- sd(df_personas$peso)

# Varianza
var_altura <- var(df_personas$altura)
var_peso <- var(df_personas$peso)

# Rango intercuartílico (IQR)
iqr_altura <- IQR(df_personas$altura)
iqr_peso <- IQR(df_personas$peso)

# Rango (diferencia entre max y min)
rango_altura <- diff(range(df_personas$altura))
rango_peso <- diff(range(df_personas$peso))

# -------------------------
# IMPRESIÓN DE RESULTADOS
# -------------------------

print(df_personas)
##   persona altura peso
## 1    Juan   1.75   75
## 2   María   1.62   60
## 3   Pedro   1.80   85
## 4     Ana   1.65   58
cat("\nMedidas de Dispersión (Altura):\n")
## 
## Medidas de Dispersión (Altura):
cat("SD:", sd_altura, "| Var:", var_altura, "| IQR:", iqr_altura, "| Rango:", rango_altura, "\n")
## SD: 0.0842615 | Var: 0.0071 | IQR: 0.12 | Rango: 0.18
cat("\nMedidas de Dispersión (Peso):\n")
## 
## Medidas de Dispersión (Peso):
cat("SD:", sd_peso, "| Var:", var_peso, "| IQR:", iqr_peso, "| Rango:", rango_peso, "\n")
## SD: 12.81926 | Var: 164.3333 | IQR: 18 | Rango: 27

Cálculo de IMC

Agregando una nueva columna calculada al Data Frame.

# -------------------------
# CÁLCULO DE IMC
# -------------------------

df_personas_imc <- df_personas
df_personas_imc$imc <- df_personas_imc$peso / (df_personas_imc$altura^2)

print(df_personas_imc)
##   persona altura peso      imc
## 1    Juan   1.75   75 24.48980
## 2   María   1.62   60 22.86237
## 3   Pedro   1.80   85 26.23457
## 4     Ana   1.65   58 21.30395