R中不转为整数如何对factor因子变量的水平进行重设及合并
完全可以不用将变量转为整数、也不用调用ifelse实现分类合并,下面提供两种常用实现方案:
方案1:基础R实现(无需额外加载包)
核心思路是直接修改因子变量的水平,不需要做类型转换:
library(plm) data("Males") # 直接重定义因子水平实现合并 levels(Males$residence) <- list( zona_a = c("north_east", "nothern_central"), zone_b = c("rural_area", "south") ) # 验证合并结果 table(Males$residence)
输出结果:
zona_a zone_b 1697 1418
方案2:tidyverse风格实现(逻辑更直观)
用forcats包的fct_collapse函数专门处理因子重分类,代码可读性更高:
library(plm) library(forcats) data("Males") Males$residence <- fct_collapse( .f = Males$residence, zona_a = c("north_east", "nothern_central"), zone_b = c("rural_area", "south") ) # 验证合并结果 table(Males$residence)
输出结果和上面的基础R方案完全一致。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

