在进行数据分析时,有时我需要将值重新编码为因子,以便进行分组分析。我希望保持因子的顺序与 case_when
中指定的转换顺序相同。在这种情况下,顺序应为 "Excellent" "Good" "Fail"
。如何在不繁琐地再次提及它的情况下实现这一点,例如 levels=c('Excellent', 'Good', 'Fail')
?
非常感谢。
library(dplyr, warn.conflicts = FALSE)
set.seed(1234)
score <- runif(100, min = 0, max = 100)
Performance <- function(x) {
case_when(
is.na(x) ~ NA_character_,
x > 80 ~ 'Excellent',
x > 50 ~ 'Good',
TRUE ~ 'Fail'
) %>% factor(levels=c('Excellent', 'Good', 'Fail'))
}
performance <- Performance(score)
levels(performance)
#> [1] "Excellent" "Good" "Fail"
table(performance)
#> performance
#> Excellent Good Fail
#> 15 30 55
levels = sapply(levels, FUN = eval)
。这使得可以执行result = fct_case_when(x < 5 ~ my_vec[3])
,而不会将“my_vec [3]”作为result
返回。 - Jonas Lindeløv