Joins con claves distintas en R
join_by maneja claves renombradas, joins por desigualdad y coincidencias rolling.
library(dplyr)
runs <- tibble(language = c("r", "python"), tpm = c(96, 104))
labels <- tibble(lang = c("r", "python"), label = c("R", "Python"))
print(left_join(runs, labels, by = join_by(language == lang)))
bands <- tibble(low = c(0, 90, 100), high = c(90, 100, Inf),
band = c("slow", "good", "fast"))
print(left_join(runs, bands, by = join_by(between(tpm, low, high))))
events <- tibble(at = c(2, 8), value = c("a", "b"))
settings <- tibble(at = c(1, 5), theme = c("light", "dark"))
print(left_join(events, settings, by = join_by(closest(at >= at))))
Cómo funciona
join_by(a == b)une columnas con nombres distintos.- Una desigualdad en
join_byda un join por rango. closest()es el join rolling, para emparejar con el tiempo más cercano.
El intento, en números
- Líneas
- 14
- Caracteres a escribir
- 556
- Tokens
- 204
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 117 segundos.
Paso 2 de 4 en Joins; paso 22 de 27 en dplyr.