如何通过添加前缀仅重命名data.frame中的某些列名称?

时间:2019-09-02 06:09:33

标签: r

我有一个像这样的data.frame

df = data.frame(
  do_not_rename = 1:3,
  rename1 = 1:3,
  rename2 = 1:3)

并且假设我只想通过在前面添加“完成”来将以"rename"开头的内容重命名为"finished_renamex"

我该怎么做?想象一下,如果我有成千上万个变量。

3 个答案:

答案 0 :(得分:5)

使用dplyr::rename_atstart_with助手

library(dplyr)
df %>% rename_at(vars(starts_with('rename')), ~paste0('finished_',.))

  do_not_rename finished_rename1 finished_rename2
1             1                1                1
2             2                2                2
3             3                3                3

使用基数R

colnames(df)[grep('^rename',names(df))] <- paste0('finished_',grep('^rename',names(df), value = TRUE))

答案 1 :(得分:4)

在基数R中,我们可以使用tr::nth-child(1n+4){ // your awesome styles } 来标识以前缀开头的列名

startsWith

答案 2 :(得分:2)

一行即可完成,gsub

 names(df) <- gsub('^rename(.)','finished_rename\\1', names(df))

 names(df)
 [1] "do_not_rename"    "finished_rename1" "finished_rename2"

如果您有超过9列这样编号的列,则应在+之后使用.字符

 names(df) <- gsub('^rename(.+)','finished_rename\\1', names(df))

通常,gsub是解决方法。

相关问题