переименовать все столбцы динамически с тем же именем и числовым суффиксом - PullRequest
1 голос
/ 27 мая 2020

Я хочу переименовать все столбцы, начинающиеся с S, в этот формат:

исходные имена столбцов

> colnames(df)
[1] "ID" "S31"         "S32"         "S33"         "S42"  

на это:

> colnames(df)
[1] "id" "common_name_1"         "common_name_2"         "common_name_3"         "common_name_4" 

Я пытаюсь использовать mutate_at, но я не нахожу способ сгенерировать автоматически c увеличивающийся суффикс ... Thx

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Мы также можем использовать grepl

cols <- grepl('^S', names(df))
df[cols] <- paste0('common_name_', seq_len(sum(cols)))
1 голос
/ 27 мая 2020

Вы можете использовать rename_at:

library(dplyr)
df %>% rename_at(vars(starts_with('S')), ~paste0('common_name_', seq_along(.)))

Используя базу R, мы можем использовать startsWith:

cols <- startsWith(names(df), 'S')
df[cols] <- paste0('common_name_', seq_len(sum(cols)))

Или с grep:

cols <- grep('^S', names(df))
df[cols] <- paste0('common_name_', seq_along(cols))
...