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

如何在R语言中按指定标识分割文本创建新变量?

R语言实现文本分割生成新变量

你可以通过正则表达式结合stringr包的函数来实现这个需求,核心是匹配XYZ-1或AAA-2作为分割节点,把原字符串拆分成Study和Question两部分。

方法一:拆分字符串后重组

先加载stringr包,用正则指定分割规则拆分字符串,再拼接出目标列:

# 加载处理字符串的包
library(stringr)

# 初始数据集
Name <- c("A B XYZ-1 Where","C AAA-2 When","ABC R SS XYZ-1 Where")
x <- data.frame(Name)

# 按"XYZ-1 "或"AAA-2 "拆分字符串,分成3个部分
split_data <- str_split_fixed(x$Name, "(XYZ-1|AAA-2)\\s", n = 3)

# 拼接得到Study列(前缀+分割标识),提取Question列
x$Study <- paste0(split_data[,1], split_data[,2])
x$Question <- split_data[,3]

方法二:直接提取目标内容

用正则分别匹配Study和Question的内容,一步到位:

library(stringr)

# 初始数据集
Name <- c("A B XYZ-1 Where","C AAA-2 When","ABC R SS XYZ-1 Where")
x <- data.frame(Name)

# 提取Study:匹配到XYZ-1或AAA-2为止的全部内容
x$Study <- str_extract(x$Name, ".+(XYZ-1|AAA-2)")

# 提取Question:去掉Study部分及后续空格
x$Question <- str_remove(x$Name, paste0(x$Study, "\\s"))

最终结果

执行代码后,数据集x会生成你需要的结构:

Name             Study Question
1        A B XYZ-1 Where        A B XYZ-1    Where
2           C AAA-2 When           C AAA-2     When
3 ABC R SS XYZ-1 Where ABC R SS XYZ-1    Where

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:50:16