如何在R语言dplyr中用mutate(across)双条件转换列类型并排除指定列
解决方案
核心需求:排除前15列,剩余字符列转为因子
你可以在across的列选择参数中直接组合类型筛选和位置筛选逻辑,无需拆分数据集,搭配%<>%即可直接修改原数据集:
# 需提前加载依赖包 library(dplyr) library(magrittr) your_df %<>% mutate(across( .cols = where(is.character) & -c(1:15), .fns = as.factor ))
.cols参数中的where(is.character) & -c(1:15)表示同时满足两个条件的列:属于字符型、且不属于前15列,完全匹配你的需求。
示例:starwars数据集排除name列,其余字符列转因子
对应你给出的示例,仅需调整排除逻辑为指定列即可:
data(starwars) starwars %<>% mutate(across( .cols = where(is.character) & -name, .fns = as.factor ))
转换后可通过str(starwars)验证:name列保持字符类型,其余原字符列(如hair_color、species等)均转为因子类型。
内容的提问来源于stack exchange,提问作者ibm
相关产品推荐
相关产品推荐

