如何用简洁方法将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
相关产品推荐
相关产品推荐

