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

R语言批量重命名数据框列:提取原列数字+保留other标识

R批量重命名数据框列:提取数字+保留other标识+添加前缀

解决方案代码

# 安装并加载必要包(首次使用需先安装)
# install.packages(c("dplyr", "stringr"))
library(dplyr)
library(stringr)

# 构造示例数据集(设置随机种子确保结果可复现)
set.seed(123)
df_toy <- data.frame(
  ID = 1:20, 
  "variable 1 - language" = sample(1:4, 20, replace = TRUE),
  "variable 1 - other" = sample(1:7, 20, replace = TRUE), 
  "variable 2 - math" = sample(1:5, 20, replace = TRUE),
  "question 4 - writing" = sample(1:20, 20, replace = TRUE), 
  "question 4 other" = NA, check.names = FALSE
)

# 核心重命名逻辑(使用管道操作符)
df_renamed <- df_toy |>
  rename_with(
    .cols = -ID, # 跳过ID列,不对其重命名
    .fn = \(col_name) {
      # 从列名中提取数字部分
      item_num <- str_extract(col_name, "\\d+")
      # 根据是否包含"other"拼接新列名
      if (grepl("other", col_name, ignore.case = TRUE)) {
        paste0("item_", item_num, " other")
      } else {
        paste0("item_", item_num)
      }
    }
  )

# 查看重命名后的列名
colnames(df_renamed)

代码说明

  • 跳过指定列:通过.cols = -ID排除不需要重命名的ID列,仅处理目标列
  • 提取数字:利用str_extract配合正则表达式\\d+,精准匹配列名中的连续数字
  • 保留other标识:用grepl检测列名是否包含"other"(忽略大小写适配不同写法),匹配成功则在数字后追加" other",否则直接生成item_数字格式的列名

执行结果

运行代码后,df_renamed的列名将变为:
ID、item_1、item_1 other、item_2、item_4、item_4 other,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:01:11