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
相关产品推荐
相关产品推荐

