如何将分类标签(class label)转换为数值格式生成新列
R语言实现分类标签转数值列的方法
方法1:正则提取(适合分类名自带对应数值的场景)
直接提取分类名中的数字转换为整数,对你示例中的class1/class2/class3格式适配性最好:
df$nsp <- as.integer(sub("class(\\d+)", "\\1", df$class))
方法2:因子映射(通用无依赖方法)
通过指定因子层级顺序来匹配数值,不需要分类名和数值有字符关联,适配所有分类映射场景:
# 按你需要的映射顺序指定levels,顺序对应数值1/2/3 df$nsp <- as.integer(factor(df$class, levels = c("class1", "class2", "class3")))
方法3:自定义规则映射(适合规则复杂、需要明确映射逻辑的场景)
用dplyr的case_when写明确的映射规则,可读性最高,后续修改规则也方便:
library(dplyr) df <- df %>% mutate(nsp = case_when( class == "class1" ~ 1, class == "class2" ~ 2, class == "class3" ~ 3 ))
内容的提问来源于stack exchange,提问作者vicky
相关产品推荐
相关产品推荐

