typestar

case_when e if_else en R

Condicionales vectorizados, evaluados en orden.

library(dplyr)

runs <- tibble(tpm = c(104, 96, 88, 60, NA))

print(mutate(runs,
             stars = case_when(
               is.na(tpm) ~ 0L,
               tpm >= 100 ~ 3L,
               tpm >= 90 ~ 2L,
               .default = 1L
             ),
             fast = if_else(tpm > 90, "yes", "no", missing = "unknown")))

print(mutate(runs, band = cut(tpm, breaks = c(0, 90, 100, Inf),
                              labels = c("slow", "good", "fast"))))

Cómo funciona

  1. Gana la primera condición que coincide, así que ordena las ramas.
  2. .default atrapa el resto; sin él obtienes NA.
  3. if_else es la versión de dos ramas y estricta con los tipos de ifelse.

El intento, en números

Líneas
15
Caracteres a escribir
330
Tokens
119
Ritmo de tres estrellas
95 tpm

Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 75 segundos.

Escribe este fragmento

Paso 2 de 4 en Columnas nuevas; paso 11 de 27 en dplyr.

← Anterior Siguiente →