通过切换字符串模式重命名数据框列名称

标签 r tidyverse rename

我有以下数据框,我想将列名称重命名为 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 函数可以做到这一点,但我不知道如何做到这一点。

最佳答案

您可以使用带有 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

关于通过切换字符串模式重命名数据框列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68110438/

相关文章:

r - 使用打破平局的排序,最大限度地减少 bool 字段的不连续性

r - 如何在R中指定3d绘图图表的相机视角?

用 R 中另一个命名向量的值替换命名向量中的值

r - 在 `df1` 中创建一个变量,具体取决于 `df1` (`df1$var1` 的一个变量,以及 `df2` 的一个可根据 `df1$var1` 更改的变量

r - 在 R 包中定义自定义 dplyr 方法

r - 有条件地创建多个变量

android - 如何制作一个动态的应用程序名称?

windows - 如何使用从当前名称中提取的子字符串重命名 Windows 文件

python - 导入时对象的名称

R 时间序列分析预测结果始终保持不变