Using dplyr::case_when
case_when
is a more generalif_else
and can be used often in place of multiple chainedif_else
or sapply’ingswitch
.It uses a special syntax to allow any number of condition-vector pairs:
set.seed(123)
x <- rlnorm(100)
centers <- data.frame(type = c('mean', 'median', 'trimmed'))
centers$value = dplyr::case_when(
centers$type == 'mean' ~ mean(x),
centers$type == 'median' ~ median(x),
centers$type == 'trimmed' ~ mean(x, trim = 0.1),
.default = 1000
)
centers
#> type value
#> 1 mean 1.652545
#> 2 median 1.063744
#> 3 trimmed 1.300568