R语言使用mutate+across将字符列转因子未生效问题
错误原因
核心问题是dplyr的管道操作不会自动覆写原对象:你执行的带mutate(across(...))的管道语句,仅将转换后的临时结果打印到控制台,没有将结果保存回LR_df1变量。
控制台输出的tibble预览里SiteCode、S01UsualResidence显示为<fct>类型,只是临时运算结果的结构,你全局环境中存储的LR_df1从未被修改,后续调用LR_df1$SiteCode时,读取的仍是最初用read_excel导入的原始字符型列,自然不会是因子类型。
注:初始赋值语句里给LR_df1加双引号属于冗余写法,R虽可正常解析,但不符合常规编码习惯,直接写变量名赋值即可。
修正代码
将管道运算的返回结果重新赋值给LR_df1即可完成持久修改:
library(readxl) library(dplyr) LR_df1 <- read_excel("Correct file location.xlsx", sheet = "Correct sheet") LR_df1 <- LR_df1 %>% as_tibble() %>% mutate(across(c(SiteCode, S01UsualResidence), as.factor))
运行完成后再执行summary(LR_df1$SiteCode),就会正常输出因子各水平的计数结果,证明类型转换生效。
内容的提问来源于stack exchange,提问作者donm79
相关产品推荐
相关产品推荐

