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

R语言如何从现有列提取分隔符前内容生成新列

R提取字符串中分隔符前内容的实现方法

你可以通过以下几种常用方案实现需求,覆盖基础R和tidyverse生态两种使用场景:

方案1:基础R实现(无需安装额外包)

使用sub()函数做正则替换,将-及后续所有字符替换为空,直接得到分隔符前的内容:

col1 <- c("J-FG12", "M-L2", "F-001","J-82")
col2 <- sub("-.*", "", col1)
# 输出验证
print(col2)
# [1] "J" "M" "F" "J"

方案2:stringr包实现(tidyverse用户常用)

如果你习惯用tidyverse生态的字符串处理工具,用str_extract()匹配开头到-之前的所有字符即可:

library(stringr)
col1 <- c("J-FG12", "M-L2", "F-001","J-82")
col2 <- str_extract(col1, "^[^-]+")
# 输出验证
print(col2)
# [1] "J" "M" "F" "J"

方案3:拆分后取首元素

先用strsplit()按-拆分字符串,再遍历提取每个拆分结果的第一个元素:

col1 <- c("J-FG12", "M-L2", "F-001","J-82")
col2 <- sapply(strsplit(col1, "-"), function(x) x[1])
# 输出验证
print(col2)
# [1] "J" "M" "F" "J"

如果是在数据框中新增列,搭配dplyr的mutate()使用即可:

library(dplyr)
df <- data.frame(col1 = col1)
df <- df %>% mutate(col2 = sub("-.*", "", col1))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:45:04