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
- Gana la primera condición que coincide, así que ordena las ramas.
.defaultatrapa el resto; sin él obtienes NA.if_elsees 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.
Paso 2 de 4 en Columnas nuevas; paso 11 de 27 en dplyr.