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

R语言如何删除列名字符串冗余内容仅保留末尾数字

解决方案

原Session向量定义存在语法问题:"Evidims_01_003_2"后缺少逗号,修正后可使用以下两种方案提取末尾数字:

# 修正后的测试数据
Session <- c("Evidims_01_001_1", "Evidims_01_001_2", "Evidims_01_001_3", 
             "Evidims_01_002_1", "Evidims_01_002_2", "Evidims_01_003_1", 
             "Evidims_01_003_2", "Evidims_01_003_3", "Evidims_01_003_4", 
             "Evidims_01_004_1")

方法1:Base R 实现(无需安装额外依赖)

通过正则匹配替换掉前缀,仅保留末尾数字:

new_session_names <- sub(".*_(\\d)$", "\\1", Session)
  • 正则逻辑:.*_匹配从字符串开头到最后一个下划线的所有内容,(\\d)$捕获字符串末尾的单个数字,最终替换为捕获到的数字即可。

方法2:stringr 包实现(语法更直观)

如果你常用tidyverse生态,可以用stringr的提取函数直接匹配末尾数字:

# 首次使用需先安装:install.packages("stringr")
library(stringr)
new_session_names <- str_extract(Session, "\\d$")

扩展适配

如果后续年份后缀可能出现多位数字(比如第10年对应后缀10),只需要调整正则即可兼容:

  • Base R 版本:sub(".*_(\\d+)$", "\\1", Session)
  • stringr 版本:str_extract(Session, "\\d+$")

如果你需要直接修改数据框的列名,假设你的数据框名为df,直接运行以下代码即可:

colnames(df) <- sub(".*_(\\d)$", "\\1", colnames(df))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:09:03