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

R语言修改dataframe中q03b_开头列名,将后缀数字加1并调整格式

解决方案

你可以直接一步完成所有列名修改,不需要拆分两个rename步骤,核心逻辑是提取列名末尾的数字转为数值加1后再拼接新的列名即可,不需要纠结tidy evaluation规则,因为rename系列函数中作用于列名的自定义函数是直接处理字符串,和列值的求值逻辑无关。

依赖包

需要提前加载tidyverse套件(包含dplyr和stringr):

library(tidyverse)

一步到位实现代码

# 测试数据构造
df <- tibble(
  ID = 1,
  q03b_0 = "a",
  q03b_1 = "b",
  q03b_2 = "c",
  q03b_14 = "m"
)

# 核心重命名代码
df <- df %>%
  rename_with(
    .fn = ~ paste0("q03_other_", as.numeric(str_extract(., "\\d+$")) + 1),
    .cols = matches("^q03b_")
  )

执行后列名会直接从q03b_0/q03b_1/q03b_14转换为q03_other_1/q03_other_2/q03_other_15,完全符合需求。


基于你当前已生成q03_other_*列的修改方案

如果你已经完成了第一步替换,只想修改末尾数字,用以下代码即可:

df <- df %>%
  rename_with(
    .fn = ~ paste0("q03_other_", as.numeric(str_extract(., "\\d+$")) + 1),
    .cols = matches("^q03_other_")
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:36:01