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

如何用R将数据框含Stocker的Job.tittle字段替换后生成新列?

解决R中gsub替换包含特定关键词的字符串问题

原代码的问题

  • 正则表达式过于限定:你写的"\bDW Overnight Stockers\w+"只针对"DW Overnight Stockers"这个特定字符串,完全覆盖不到数据里的"TH Stockers"、"CM Midland Stockers"这类目标字符串
  • 转义字符错误:R中正则的转义符需要用双反斜杠,\b应写为\\b,\w应写为\\w,但即使修正转义,这个正则也不符合你的需求

正确的实现方案

方案一:直接用gsub匹配替换

使用更通用的正则表达式,匹配所有包含Stocker或Stockers的字符串,直接替换为Stocker:

x <- data.frame(Job.tittle=c("DW Overnight Stockers", "Checkers","TH Stockers", "CM Midland Stockers"), Head.counts=c(100,50,100,200))
x$job.title.2 <- gsub(".*Stockers?", "Stocker", x$Job.tittle)
  • .*:匹配任意数量的任意字符(包括0个)
  • Stockers?:匹配Stocker或Stockers(?表示前面的s是可选的)
  • 整个正则会匹配所有包含Stocker相关关键词的完整字符串,并替换为Stocker

方案二:先判断再赋值(更直观)

先将原列内容复制到新列,再筛选出包含目标关键词的行进行替换:

x <- data.frame(Job.tittle=c("DW Overnight Stockers", "Checkers","TH Stockers", "CM Midland Stockers"), Head.counts=c(100,50,100,200))
x$job.title.2 <- x$Job.tittle
# 找出包含Stocker/Stockers的行并替换
x$job.title.2[grepl("Stockers?", x$Job.tittle)] <- "Stocker"
  • grepl("Stockers?", x$Job.tittle):返回逻辑向量,标记哪些行的职位名称包含目标关键词
  • 通过索引直接修改这些行的新列值为Stocker

运行结果

执行上述代码后,数据框x的job.title.2列结果为:
"Stocker", "Checkers", "Stocker", "Stocker",完全符合需求

内容的提问来源于stack exchange,提问作者Jorge Enrique Rangel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:30:44