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

R语言变量重命名:移除数字前缀并将数字移至末尾

问题与解决方案

问题说明

现有R语言数据框DATA:

DATA = data.frame(a1trt = c(1,2),
                  a2trt = c(5,9),
                  b1for = c(0,9),
                  b2for=c(5,6),
                  b3for = c(NA,8))

需对所有变量名执行如下修改:移除数字前的所有内容,并将数字移至变量名末尾,最终得到如下WANT数据框的格式:

WANT = data.frame(trt1 = c(1,2),
                  trt2 = c(5,9),
                  for1 = c(0,9),
                  for2=c(5,6),
                  for3 = c(NA,8))

实现方法

基础R方式

通过正则表达式匹配并替换列名,无需额外安装包:

# 提取原列名并执行正则替换
new_colnames <- gsub("^.*?(\\d+)(.*)$", "\\2\\1", colnames(DATA))
# 为数据框赋予新列名
colnames(DATA) <- new_colnames

# 验证结果
print(DATA)

正则表达式逻辑:

  • ^.*?(\\d+)(.*)$:非贪婪匹配开头到第一个数字前的所有内容,捕获数字部分(\\d+)和数字后的剩余内容(.*)
  • \\2\\1:将捕获的数字后内容与数字调换位置,得到目标列名

tidyverse(dplyr)方式

如果日常使用tidyverse工具链,可通过rename_with函数快速实现:

library(dplyr)

DATA <- DATA %>%
  rename_with(function(x) gsub("^.*?(\\d+)(.*)$", "\\2\\1", x))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:26:07