【问题标题】:Add a string to column names ending with digits R将字符串添加到以数字 R 结尾的列名
【发布时间】:2021-09-05 19:49:43
【问题描述】:

我的数据如下所示:

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 位数字的列名。

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

希望这是有道理的。

非常感谢!

【问题讨论】:

    标签: r regex dplyr tidyverse stringr


    【解决方案1】:

    我们可以使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-26
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-08
      • 2011-07-26
      相关资源
      最近更新 更多