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

R语言开发:拆分列b末尾SX/DX并生成新列的实现方案

R语言实现文本后缀拆分与原列修改

以下是两种实现方案,分别基于base R和stringr包,均可满足需求:

方案一:使用base R(无需额外安装包)

# 加载示例输入数据
a <- read.table(text="
Num X b   
12   3   \"ab SX\"    
13   35  \"sd DX\" 
14   35  \"dh af SX\" 
15   10  \"sd\"", header=TRUE, stringsAsFactors=FALSE)

# 1. 提取末尾的SX/DX到新列DXSX,无匹配则填0
a$DXSX <- sub(".*\\s(SX|DX)$", "\\1", a$b)
a$DXSX[a$DXSX == a$b] <- "0"

# 2. 修改原列b,移除末尾的SX/DX(若存在)
a$b <- sub("\\s(SX|DX)$", "", a$b)

# 查看最终结果
print(a)

方案二:使用stringr包(语法更直观)

先安装并加载stringr包:

install.packages("stringr")
library(stringr)

然后执行处理代码:

# 加载示例输入数据
a <- read.table(text="
Num X b   
12   3   \"ab SX\"    
13   35  \"sd DX\" 
14   35  \"dh af SX\" 
15   10  \"sd\"", header=TRUE, stringsAsFactors=FALSE)

# 1. 提取后缀并处理无匹配情况
a$DXSX <- str_extract(a$b, "\\s(SX|DX)$") %>% 
  str_trim() %>% 
  replace_na("0")

# 2. 移除原列的后缀内容
a$b <- str_remove(a$b, "\\s(SX|DX)$") %>% 
  str_trim()

# 查看最终结果
print(a)

代码说明

  • 正则表达式\\s(SX|DX)$用于匹配字符串末尾的空格+SX/DX,$确保仅匹配结尾部分,避免误匹配中间的SX/DX。
  • base R方案中,sub函数完成匹配替换,通过判断替换后是否与原字符串一致,标记无匹配的情况为"0"。
  • stringr方案中,str_extract提取目标后缀,str_remove移除原列的后缀,replace_na直接将无匹配的NA转为"0",逻辑更清晰。

运行任意一种方案后,得到的结果与示例输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:11:15