You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中对数据框多列批量执行Label Encoding?

批量实现Label Encoding的几种R方案

方案1:Base R 循环(手动控制逻辑)

如果习惯用基础R语法,可通过循环遍历目标列,逐个生成编码后的新列:

# 定义需要编码的列名(所有列直接用colnames(DF)即可)
cols_to_encode <- colnames(DF)

# 循环处理每一列
for (col in cols_to_encode) {
  # 生成带后缀的新列名
  new_col <- paste0(col, "_num")
  # 执行编码:先转因子再转数值
  DF[[new_col]] <- as.numeric(factor(DF[[col]]))
}

运行后原数据框会新增Gender_num、School_num、Town_num列,对应各分类列的编码结果。

方案2:用dplyr批量处理(简洁高效)

如果常用tidyverse工具链,dplyr的across函数可快速完成批量编码:
先确保安装并加载包:

install.packages("dplyr")
library(dplyr)

再执行编码:

# 对所有列生成编码新列(保留原列)
DF <- DF %>%
  mutate(across(everything(), ~as.numeric(factor(.)), .names = "{col}_num"))

across(everything())选中所有列,.names = "{col}_num"指定新列名为原列名加_num;若只需处理部分列,把everything()换成列名向量(如c("Gender", "School"))即可。

方案3:用apply生成纯编码数据集

若想直接生成仅含编码值的新数据框(可选择合并到原数据):

# 生成编码后的新数据框
encoded_df <- as.data.frame(lapply(DF, function(x) as.numeric(factor(x))))
# 给新列加后缀
colnames(encoded_df) <- paste0(colnames(DF), "_num")
# 合并到原数据框
DF <- cbind(DF, encoded_df)

注意事项

  • 因子默认按字母顺序编码,若需自定义顺序(比如让Male=1、Female=2),可在factor()中指定levels参数,例如factor(DF[[col]], levels = c("Male", "Female")),上述三种方案都可调整此逻辑。
  • 数据中的缺失值会被保留为NA,转数值后仍为NA,无需额外处理。

内容的提问来源于stack exchange,提问作者andrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 06:30:01