【问题标题】:Rename dataframe column names by switching string patterns通过切换字符串模式重命名数据框列名
【发布时间】:2021-09-07 15:14:02
【问题描述】:

我有以下数据框,我想将列名重命名为 c("WBC_MIN_D7", "WBC_MAX_D7", "DBP_MIN_D3")

> dataf <- data.frame(
+     WBC_D7_MIN=1:4,WBC_D7_MAX=1:4,DBP_D3_MIN=1:4
+ )
> dataf
  WBC_D7_MIN WBC_D7_MAX DBP_D3_MIN
1          1          1          1
2          2          2          2
3          3          3          3
4          4          4          4
> names(dataf)
[1] "WBC_D7_MIN" "WBC_D7_MAX" "DBP_D3_MIN"

大概tidyverse中的rename_with函数可以做到,但我不知道怎么做。

【问题讨论】:

    标签: r tidyverse rename


    【解决方案1】:

    您可以使用带有sub 的捕获组来按顺序提取值-

    names(dataf) <- sub('^(\\w+)_(\\w+)_(\\w+)$', '\\1_\\3_\\2', names(dataf))
    

    rename_with 可以使用相同的正则表达式 -

    library(dplyr)
    
    dataf %>% rename_with(~ sub('^(\\w+)_(\\w+)_(\\w+)$', '\\1_\\3_\\2', .))
    
    #  WBC_MIN_D7 WBC_MAX_D7 DBP_MIN_D3
    #1          1          1          1
    #2          2          2          2
    #3          3          3          3
    #4          4          4          4
    

    【讨论】:

      【解决方案2】:

      您可以使用带有名称(yourDF)

      names(dataf) <- c("WBC_MIN_D7", "WBC_MAX_D7", "DBP_MIN_D3")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-18
        • 1970-01-01
        • 1970-01-01
        • 2018-12-24
        • 2022-12-30
        • 1970-01-01
        • 2021-07-08
        • 1970-01-01
        相关资源
        最近更新 更多