【发布时间】:2021-09-29 19:01:49
【问题描述】:
我有一个混乱的因子变量,其中包含各种非常相似的因子水平(例如,由拼写错误、稍微不同的措辞等引入)。 我正在尝试使用 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。
(该链接并不太有用。) 使用辅助函数如何做到这一点?
【问题讨论】:
-
选择辅助函数仅适用于选择列。使用 stringr 函数进行一般字符串匹配。
标签: r categories startswith forcats tidyselect