我有一个杂乱无章的因子变量,其中包含各种非常相似的因子水平(例如,由拼写错误引入,措辞略有不同等)。我正在尝试使用 forcats 包中的 fct_collapse 函数将该因素组合成四个主要类别。
但是,考虑到可变性的数量,我想将 fct_collapse 函数与来自 tidy selct 的选择助手(例如starts_with() 和 contains() 结合起来)。
这是一个简单的可重现示例:具有不同级别的单个因子列,我想将其减少为两个因子级别“a”和“b”。
factor_df<-tibble(my_factor=factor(c("a_1","a_2","a_x","a_factor","a_factor","also_factor_a",
"1_b_1","2_b_2","xx_b_xx")))
我不想列出每一个因素,而是尽可能使用选择助手为我做这件事。但是,以下代码会引发错误:
factor_df%>%
mutate(new_fct=fct_collapse(factor_df$my_factor,
a=c(starts_with("a_"), "also_factor_a"),
b=c(tidyselect::contains("_b_"))))
错误:starts_with()
必须在选择函数中使用。我参见https://tidyselect.r-lib.org/reference/faq-selection-context.html。
(该链接并没有太大帮助。)如何使用辅助函数来做到这一点?