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

如何用简洁方法将DataFrame中的字符批量转换为数字(1-5)

简洁转换DataFrame中尺码字符为数字的方法

给你几种不用写大量ifelse()的简洁方案,直接处理整个数据框:

方法1:利用因子(factor)转换

先定义尺码的顺序和对应数字,通过因子的levels和labels批量转换:

# 定义尺码映射规则:s→1,m→2,l→3,xl→4,xxl→5
size_levels <- c("s", "m", "l", "xl", "xxl")
size_nums <- 1:5

# 对整个数据框应用转换
dat_num <- as.data.frame(lapply(dat, function(col) {
  # 把列转为指定顺序的因子,再转成数字
  as.numeric(factor(col, levels = size_levels, labels = size_nums))
}))

方法2:用dplyr的recode批量处理

如果习惯用tidyverse工具链,mutate_all配合recode可以直观完成映射:

library(dplyr)

dat_num <- dat %>%
  mutate_all(recode,
             "s" = 1,
             "m" = 2,
             "l" = 3,
             "xl" = 4,
             "xxl" = 5)

方法3:利用命名向量匹配

先创建一个命名向量作为映射字典,直接通过索引批量替换:

# 创建尺码-数字的映射字典
size_map <- c("s"=1, "m"=2, "l"=3, "xl"=4, "xxl"=5)

# 对每列应用映射
dat_num <- as.data.frame(lapply(dat, function(col) size_map[col]))

这三种方法都能一次性处理整个数据框,不用逐列写判断逻辑,根据你的习惯选就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:01:18