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

如何使用dplyr重命名含数字与字符混合的多列?

使用dplyr重命名多列(含纯数字/数字字符混合列名)

在dplyr中,rename()和rename_with()是处理列重命名的核心工具,下面针对不同类型的列名给出具体实现:

1. 处理纯数字列名

纯数字列名(如1、2)属于R中的特殊标识符,必须用**反引号(`)**包裹才能正确引用。

单个重命名

先构造示例数据框:

library(dplyr)
library(tibble)

df <- tibble(`1` = 1:3, `2` = 4:6, x1 = 10:12, y2 = 13:15)

用rename()单独重命名纯数字列:

df_renamed <- df %>%
  rename(
    user_id = `1`,       # 将列`1`重命名为user_id
    transaction_count = `2`  # 将列`2`重命名为transaction_count
  )

批量重命名纯数字列

如果有大量纯数字列,用rename_with()结合正则匹配批量处理:

df_renamed <- df %>%
  rename_with(
    ~ paste0("numeric_col_", .x),  # 给纯数字列加统一前缀
    matches("^[0-9]+$")            # 匹配所有纯数字列名
  )

执行后,列1会变成numeric_col_1,列2变成numeric_col_2。

2. 处理数字与字符混合的列名

这类列名(如x1、y2、score_3)属于常规标识符,直接引用即可,无需反引号。

单个重命名

df_renamed <- df %>%
  rename(
    exam_score = x1,    # 将x1重命名为exam_score
    activity_score = y2 # 将y2重命名为activity_score
  )

批量重命名混合列

比如统一调整列名格式,把x1改成x_01、y2改成y_02:

df_renamed <- df %>%
  rename_with(
    ~ gsub("(\\w)(\\d)", "\\1_\\2", .x),  # 插入下划线分隔字符与数字
    matches("^\\w+\\d+$")                 # 匹配字符+数字的列名
  )

或者给所有混合列加统一前缀:

df_renamed <- df %>%
  rename_with(
    ~ paste0("metric_", .x),
    matches("^[a-z]+\\d+$")
  )

3. 同时处理两种类型列名的综合示例

# 构造示例数据框
df <- tibble(`1` = 1:5, `3` = 6:10, age_2 = 11:15, score_4 = 16:20)

# 混合重命名:单独修改纯数字列,批量修改混合列
final_df <- df %>%
  rename(
    id = `1`,          # 重命名单个纯数字列
    total = `3`        # 重命名另一个纯数字列
  ) %>%
  rename_with(
    ~ gsub("_(\\d)", "_0\\1", .x),  # 给数字补前导零,比如age_2→age_02
    matches("^\\w+_\\d+$")
  )

最终列名会变成:id、total、age_02、score_04。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 03:20:16