首页 > 解决方案 > 使用 r 中的 rename_at 从列名中删除后缀

问题描述

我有一个数据框,其中许多列以相同的后缀结尾,我想使用 rename_at() 将它们全部删除,但我无法弄清楚。

library(tidyverse)

my_df <- tibble(id = c(1, 2), 
jan_real = c(8, 10),
feb_real = c(9, 10),
mar_real = c(1, 11))

desired_df <- tibble(id = c(1, 2), 
jan = c(8, 10),
feb = c(9, 10),
mar = c(1, 11))

标签: rdplyrtidyverserenamesuffix

解决方案


您现在应该使用whichrename_with()取代rename_at()dplyr 1.0.0

library(dplyr)

my_df %>%
  rename_with(~ sub("_real$", "", .x), everything())

# A tibble: 2 x 4
     id   jan   feb   mar
  <dbl> <dbl> <dbl> <dbl>
1     1     8     9     1
2     2    10    10    11

使用rename_at()

my_df %>%
  rename_at(vars(everything()), ~ sub("_real$", "", .x))

推荐阅读