Dominio de Funciones y Bucles en R: Ejemplos Prácticos

Enviado por Chuletator online y clasificado en Matemáticas

Escrito el en español con un tamaño de 3,12 KB

Manipulación de Datos con dplyr

Para realizar operaciones de agrupación y resumen, utiliza la siguiente estructura:

“Calcula... para cada / por cada / según el [Grupo]” o “Obtén la media/total de forma desagregada por [Grupo]”.

Resultado <- Dataset %>%
  group_by(Columna_De_Los_Grupos) %>%
  summarize(Titulo = funcion_matematica(Variable, na.rm = TRUE))

Para crear nuevas columnas basadas en condiciones:

Crea una nueva columna llamada [X] que clasifique / etiquete / asigne un valor dependiendo de...” o “Calcula una nueva variable basada en una condición...”.

Resultado <- Dataset %>%
  mutate(Nombre_Nueva_Columna = if_else(Condición_A_Cumplir, "Lo que se escribe si CUMPLE", "Lo que se escribe si NO cumple"))

Uso de Bucles y Funciones Personalizadas

1. Iteración con for y cat()

Si necesitas calcular valores mediante un bucle y mostrar resultados formateados:

titulo <- function(x, y) {
  for (tasa in tasas) {
    # Aplicar la fórmula matemática
    titulo <- formula
    # Transformar la tasa a porcentaje
    Tasa_porcentaje <- lo_que_quieres_transformar * 100
    # Mostrar el mensaje personalizado
    cat("Con una tasa del", tasa_porcentaje, "%, el valor final es:", titulo, "euros\n")
  }
}

2. Cálculo de Rango (rng)

Función para obtener la diferencia entre los valores máximo y mínimo de un vector:

rng <- function(x) {
  ret <- max(x) - min(x)
  return(ret)
}
# Aplicación
rng(datos_incorporados$laquesea)

3. Clasificación con ifelse

Creación de un vector aleatorio y categorización:

Variables <- runif(30)
ifelse(Variables < 0.2, 'pequeño', 'grande')

4. Simulación de Batería con while

Función para simular el incremento de carga hasta un objetivo:

bateria <- function(nivel_inicial, nivel_objetivo) {
  nivel_actual <- nivel_inicial
  while(nivel_actual < nivel_objetivo) {
    nivel_actual <- nivel_actual + 10
    print(nivel_actual)
  }
  if(nivel_actual >= nivel_objetivo) {
    break
  }
}
bateria(20, 60)

5. Conteo Condicional en mtcars

Uso de un bucle while para recorrer filas y contar vehículos con más de 100 HP:

data(mtcars)
i <- 1
contador_coches <- 0
total_filas <- nrow(mtcars)

while (i <= total_filas) {
  if (mtcars$hp[i] > 100) {
    contador_coches <- contador_coches + 1
  }
  i <- i + 1
}
print(paste("El número de coches con más de 100 HP es:", contador_coches))

6. Diferencias Consecutivas

Cálculo de la diferencia entre elementos sucesivos de un vector:

diferencias.consecutivas <- function(v) {
  if (length(v) < 2) {
    return(numeric(0))
  }
  n <- length(v)
  resultado <- v[2:n] - v[1:(n-1)]
  return(resultado)
}
# Aplicación
v <- c(3, 5, 10, 17, 19, 32)
diferencias.consecutivas(v)

Entradas relacionadas: