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

如何移除数据列中特定关键词及之后的所有内容

在R中清理公司名称列:移除特定关键词及其后续内容

需求说明

需要处理数据框中的company_name列,移除"aka"或"dba"这两个关键词以及它们之后的所有字符,同时兼容关键词前后可能存在的多个空格情况。

原始数据结构

df <- structure(list(Number.of.Workers = c("82", "82", "79", "79", 
"71", "65", "62", "58", "56", "53", "49"), company_name = c("valley ho hotels aka kings inn", 
"aluminum precision products", "levity of brea  dba brea improv", 
"crunch", "comedy club of los angeles  dba hollywood improv", 
"andre-boudin bakeries inc   dba boudin", "comedy club of san jose  dba san jose improv", 
"comedy club of brea  dba ontario improv", "sprout bost ", "culver west lp - playa provisions", 
"faa concord h dba concord honda")), row.names = 5195:5205, class = "data.frame")

解决方案

方法1:使用stringr包(tidyverse生态,语法更直观)

先加载stringr包,然后用正则表达式匹配并移除目标内容:

library(stringr)

# 方式一:直接移除关键词及后续内容
df$cleaned_company_name <- str_remove_all(df$company_name, "\\s*(aka|dba).*")

# 方式二:提取关键词之前的内容(无关键词则保留原内容)
df$cleaned_company_name <- str_extract(df$company_name, "^.*?(?=\\s*(aka|dba))|^.*$")

方法2:基础R的gsub函数(无需额外安装包)

用基础R的正则替换功能直接处理:

df$cleaned_company_name <- gsub("\\s*(aka|dba).*", "", df$company_name)

正则说明

  • \\s*:匹配0个或多个空格(兼容关键词前有多个空格的情况)
  • (aka|dba):匹配"aka"或"dba"任意一个关键词
  • .*:匹配关键词之后的所有字符
  • 替换为空字符串""即可实现移除效果

处理后示例结果

行号原company_namecleaned_company_name
5195valley ho hotels aka kings innvalley ho hotels
5197levity of brea dba brea improvlevity of brea
5198crunchcrunch
5200andre-boudin bakeries inc dba boudinandre-boudin bakeries inc

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:35:13