r - 以整数 r 结尾的列名加 1
问题描述
我的问题很简单,我有一个包含许多列的数据框,其中一些以 开头q03b_
,如下所示:
ID ... q03b_0 q03b_1 q03b_2 ... q03b_14
1 ... a b c m
但我需要将列名更改为q03b_other_1
、q03b_other_2
、q03b_other_3
等(从 1 开始计数,而不是 0)。我设法选择了列rename_at
并将“其他”添加到列名中,如下所示:
df %>%
rename_at(vars(matches('q03b_')), list(~ str_replace(., "b_(\\d+)", "_other_\\1")))
这带来了这样的数据框:
ID ... q03_other_0 q03_other_1 q03_other_2 ... q03_other_14
1 ... a b c m
但我正在努力进入最后阶段,这将是:
ID ... q03_other_1 q03_other_2 q03_other_3 ... q03_other_15
1 ... a b c m
我想我需要使用 and 的组合as.numeric
,as.character
但是由于整洁的评估,我正在努力寻找一种方法来完成这项工作。有任何想法吗?
谢谢 !
解决方案
与gsubfn
:
library(dplyr)
library(readr)
library(gsubfn)
df %>%
rename_at(vars(matches('q03b_')),
list(~ gsubfn("b_\\d+$",
~ paste0("_other_",
parse_number(x) + 1),
.)))
输出
q03_other_1 q03_other_2 q03_other_3
1 a b c