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

求助:在R中使用正则表达式移除列名中的年份标签

如何在R中移除列名里的年份标签

嘿,别担心,这个问题在R里超容易解决,完全不用头疼复杂的正则知识!我一步步给你讲明白:

步骤1:先模拟你的数据(方便测试)

咱们先创建一个和你列名格式一致的示例数据框,你可以直接复制代码测试效果:

# 示例数据框,列名和你的格式匹配
df <- data.frame(
  PROV_201601 = c(1, 2, 3),
  MNT_201602 = c(4, 5, 6),
  PROV_201612 = c(7, 8, 9)
)

步骤2:用gsub()批量删掉"2016"

R里的gsub()函数就是专门用来批量替换字符串的,咱们只需要把列名里的"2016"替换成空字符串(相当于直接删掉),代码超简单:

# 替换列名中的"2016"为空白(也就是移除它)
colnames(df) <- gsub("2016", "", colnames(df))

看看最终效果!

运行完上面的代码后,你可以用colnames(df)查看结果,输出会是:

[1] "PROV_01" "MNT_02" "PROV_12"

完全符合你要去掉"2016"的需求~

拓展:如果以后年份变了怎么办?

要是你的数据里以后出现其他四位年份(比如2017、2018),不想每次手动改年份数字,也可以用简单的正则匹配四位数字。比如把下划线后面的四位年份统一去掉,代码是:

# 匹配「下划线+四位数字」的组合,替换成下划线
colnames(df) <- gsub("_\\d{4}", "_", colnames(df))

这里给你简单解释下这个正则的意思:

  • _:精准匹配列名里的下划线
  • \\d{4}:匹配连续4个数字(也就是咱们的四位年份)
    整体就是找到"xxxx"(xxxx是任意四位年份),替换成"",这样不管是2016还是其他年份都能轻松移除啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:05:29