如何使用dplyr重命名多个列

228 阅读1分钟

你可以使用R中dplyr包的以下函数来重命名数据框中的多列。

方法1:使用rename()

df %>% rename(new1 = old1, new2 = old2)

方法2:使用rename_with()

new <- c('new1', 'new2')
old <- c('old1', 'old2')

df %>% rename_with(~ new, all_of(old))

这两种方法都会产生相同的结果。

下面的例子展示了如何在R语言中使用这些方法中的每一种,即以下数据框:

#create data frame
df <- data.frame(team=c('A', 'B', 'C', 'D', 'E'),
                 points=c(22, 34, 30, 12, 18),
                 assists=c(7, 9, 9, 12, 14))

#view data frame
df

  team points assists
1    A     22       7
2    B     34       9
3    C     30       9
4    D     12      12
5    E     18      14

例1:使用rename()重命名多个列

下面的代码显示了如何使用rename()函数来重命名数据框中的球队积分列:

library(dplyr)

#rename team and points columns
df2 <- df %>% rename(team_new = team, points_new = points)

#view updated data frame
df2

  team_new points_new assists
1        A         22       7
2        B         34       9
3        C         30       9
4        D         12      12
5        E         18      14

球队积分列已经被重新命名,而助攻列则保持不变。

例2:使用rename_with()重命名多个列

下面的代码显示了如何使用rename_with()函数来重命名数据框中的球队得分列:

library(dplyr)

#define new names
new <- c('team_new', 'points_new')

#define old names to replace
old <- c('team', 'points')

#rename old names with new names
df2 <- df %>% rename_with(~ new, all_of(old))

#view updated data frame
df2

  team_new points_new assists
1        A         22       7
2        B         34       9
3        C         30       9
4        D         12      12
5        E         18      14

球队得分列已经被重新命名,而助攻列则保持不变。

请注意,当你有一长串你想替换的列名时,这种方法可能更容易使用。

其他资源

下面的教程解释了如何使用dplyr执行其他常见任务:

如何使用dplyr按名称选择列
如何使用dplyr按索引选择列
如何在dplyr中使用带有多个条件的select_if