You need to enable JavaScript to run this app. R语言如何批量对多列应用ifelse逻辑生成分类新列
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何批量对多列应用ifelse逻辑生成分类新列

R语言批量处理多列职位分类实现方案

核心思路

把重复的分类逻辑封装为独立函数,再批量应用到4个职位名称列,自动生成对应的分类列,避免重复编写冗余代码。

步骤1:定义匹配规则与处理函数

首先把你原有的分类优先级和关键词抽离为规则向量,再编写通用的分类函数:

# 加载需要的包(基础R方案可跳过)
library(dplyr)
library(stringr)
library(purrr)

# 定义分类规则,顺序和你原有的优先级保持一致,优先级高的放前面
category_rules <- c(
  "1" = "frontend|ui|ux",
  "2" = "backend",
  "3" = "fullstack",
  "4" = "entwickler|development|application|developer|software",
  "5" = "data|analytics|machine|programmer|ml|engineer|engineering|learning",
  "6" = "research|teaching|akademischer|researcher",
  "7" = "project|manager|product|consultant|consulting",
  "8" = "it|security|technical|tech",
  "9" = "marketing|sales|media|saas|business|commerce|support|digital|graphic|designer|graphics|design",
  "10" = "founder|ceo|partner|chief|executive|cto"
)
# 备注:原代码里的margketing、markeing为拼写错误,以上已经修正为marketing,你可以按需调整

# 编写通用分类函数
get_job_category <- function(job_vec) {
  map_dbl(job_vec, function(x) {
    if (is.na(x)) return(NA_real_)
    # 按优先级匹配,返回第一个命中的分类
    for (i in seq_along(category_rules)) {
      # ignore.case设置为TRUE表示忽略大小写,要严格匹配大小写可改为FALSE
      if (grepl(category_rules[i], x, ignore.case = TRUE)) {
        return(as.numeric(names(category_rules)[i]))
      }
    }
    # 未匹配到任何规则返回NA
    return(NA_real_)
  })
}

步骤2:批量应用到所有职位列

方案1:dplyr写法(推荐,代码更简洁易维护)

# 批量处理job1-job4,自动生成category1-category4列
data_rel <- data_rel %>%
  mutate(across(starts_with("job"), 
                .fns = get_job_category,
                .names = "category{str_extract(.col, '\\\\d+')}"))

方案2:基础R写法(不需要加载第三方包)

# 提取所有job列的索引
job_cols <- grep("^job", names(data_rel))
# 循环生成对应分类列
for (i in seq_along(job_cols)) {
  data_rel[[paste0("category", i)]] <- get_job_category(data_rel[[job_cols[i]]])
}

后续维护提示

后续如果需要调整分类规则、增减分类,只需要修改category_rules向量即可,不需要调整逻辑代码,维护成本远低于逐列写嵌套ifelse。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 15:15:06