向以数字 R 结尾的列名称添加一个字符串

Add a string to column names ending with digits R

我的数据是这样的:

df <- tibble(Date = c("2020-10-01", "2020-10-02", "2020-10-03", "2020-10-04", "2020-10-05"),
             Department = c("blue", "green", "yellow" ,"red", "purple"),
             Covid_10 = rnorm(5),
             Covid_12 = rnorm(5)
             )

我想创建一个函数,将字符串 "_peak" 添加到末尾包含 2 位数字的列名称的末尾。例如,在我的数据集中,我有两列,它们的名称末尾有 2 个数字(Covid_10 和 Covid_12)。

我希望列名看起来像这样 "Covid_10_peak"。所以字符串“_peak”被粘贴到列名的末尾。我希望这仅适用于末尾有 2 位数字的列名。

其他末尾没有数字(日期、部门)的列名称应保持不变。

希望这是有道理的。

非常感谢!

我们可以使用 rename_with :

library(dplyr)
df %>% rename_with(~paste0(., '_peak'), matches('\d{2}$'))

#  Date       Department Covid_10_peak Covid_12_peak
#  <chr>      <chr>              <dbl>         <dbl>
#1 2020-10-01 blue              1.93          2.26  
#2 2020-10-02 green            -1.08          0.985 
#3 2020-10-03 yellow            0.0394        1.22  
#4 2020-10-04 red              -1.81         -0.303 
#5 2020-10-05 purple            0.605         0.0165

或以 R 为基数 -

cols <- grep('\d{2}$', names(df))
names(df)[cols] <- paste0(names(df)[cols], '_peak')
df