dt_case_when.Rd
Does what dplyr::case_when()
does, with the same syntax, but with
data.table::fcase()
under the hood.
dt_case_when(...)
statements of the form: condition ~ label
, where the label is applied if the condition is met
Vector of the same size as the input vector
x <- rnorm(100)
dt_case_when(
x < median(x) ~ "low",
x >= median(x) ~ "high",
is.na(x) ~ "other"
)
#> [1] "high" "high" "low" "high" "low" "low" "high" "low" "low" "high"
#> [11] "high" "high" "low" "high" "high" "high" "high" "low" "high" "low"
#> [21] "high" "low" "low" "high" "low" "high" "low" "low" "low" "high"
#> [31] "high" "low" "high" "low" "low" "high" "low" "low" "low" "high"
#> [41] "low" "high" "high" "low" "low" "low" "low" "high" "low" "high"
#> [51] "high" "low" "high" "low" "high" "low" "high" "high" "low" "low"
#> [61] "high" "high" "low" "high" "low" "high" "high" "low" "low" "high"
#> [71] "high" "high" "low" "low" "low" "high" "high" "low" "low" "high"
#> [81] "low" "low" "low" "high" "high" "low" "high" "high" "low" "low"
#> [91] "high" "high" "high" "low" "low" "high" "high" "high" "low" "low"
library(data.table)
temp <- data.table(
pseudo_id = c(1, 2, 3, 4, 5),
x = sample(1:5, 5, replace = TRUE)
)
temp[, y := dt_case_when(
pseudo_id == 1 ~ x * 1,
pseudo_id == 2 ~ x * 2,
pseudo_id == 3 ~ x * 3,
pseudo_id == 4 ~ x * 4,
pseudo_id == 5 ~ x * 5
)]
#> pseudo_id x y
#> <num> <int> <num>
#> 1: 1 5 5
#> 2: 2 3 6
#> 3: 3 3 9
#> 4: 4 5 20
#> 5: 5 4 20