Это заменяет каждое вхождение всех символов вплоть до подчеркивания пустой строкой, а затем делает результат уникальным. Мы можем по желанию удалить %>% make.unique
в первом случае или %>% as_tibble(.name_repair = "unique")
во втором случае, если известно, что имена в любом случае будут уникальными. порядке.
library(dplyr)
library(tibble)
DF %>% rename_all(~ sub(".*_", "", .x)) %>% as_tibble(.name_repair = "unique")
Пример
Например, используя первый вышеупомянутый случай, добавьте префиксы к каждому имени встроенного anscombe
, создавая DF
, и примените вышеуказанное к этому в последняя строка кода ниже.
# set up a test data frame using builtin anscombe
DF <- setNames(anscombe, sub("(.)(.)", "\\1_\\2", names(anscombe)))
names(DF)
## [1] "x_1" "x_2" "x_3" "x_4" "y_1" "y_2" "y_3" "y_4"
DF %>% rename_all(~ sub(".*_", "", .x) %>% make.unique)
## 1 2 3 4 1.1 2.1 3.1 4.1
## 1 10 10 10 8 8.04 9.14 7.46 6.58
## 2 8 8 8 8 6.95 8.14 6.77 5.76
## ...etc...