我试图在mutate(across(where(is.factor)))中提供两个函数来排序因子级别并删除未使用的级别。该代码似乎没有按预期工作。哪里可能出错了?
#---- Libraries ----
library(tidyverse)
#---- Data ----
set.seed(2021)
df <- tibble(
a1 = factor(ifelse(sign(rnorm(30))==-1, 0, 1), labels = c("No", "Yes")),
a2 = factor(ifelse(sign(rnorm(30))==-1, 0, 1), labels = c("No", "Yes")),
gender = gl(2, 15, labels = c("Males", "Females")),
b2 = gl(3, 10, labels = c("Primary", "Secondary", "Tertiary", "Unknown")),
c1 = gl(3, 10, labels = c("15-19", "20-24", "25-30", "30-35")),
outcome = factor(ifelse(sign(rnorm(30))==-1, 0, 1), labels = c("No", "Yes")),
weight = runif(30, 1, 12)
)
#---- Problem ----
df <- df %>%
mutate(across(where(is.factor), list(fct_infreq, fct_drop)))
levels(df$b2)
# The unused levels not dropped