搜索和替换函数以重命名列

时间:2016-06-16 03:50:23

标签: r dataframe rename

我有这样的数据框

> d <- data.frame(team.aaa=1:3, team.aab=4:6, team.aac=7:9)
> d

#   team.aaa team.aab team.aac
#1        1        4        7
#2        2        5        8

和,期望的输出

d <- rename(d, c("team.aaa"="aaa_team", "team.aab"="aab_team", "team.aac"="aac_team"))
> d
#  aaa_team aab_team aac_team
#1        1        4        7
#2        2        5        8
#3        3        6        9

我可以使用重命名字符串来执行此操作,但由于数据量巨大,因此希望使用搜索和替换选项 非常感谢提前

1 个答案:

答案 0 :(得分:2)

根据OP的帖子中显示的示例,似乎.之后的后缀部分应该是前缀而反之亦然。在这种情况下,我们可以使用sub来捕获非.后跟.的字符,然后捕获其余字符((.*))并替换它相应的反向引用安排。

names(d) <- sub("([^.]+).(.*)", "\\2_\\1", names(d))
names(d)
#[1] "aaa_team" "aab_team" "aac_team"

或者另一种选择是将字符串拆分为.,然后在撤消订单后将paste拆分

sapply(strsplit(names(d), "[.]"), function(x) paste(rev(x), collapse="_"))

或者@jota在评论中提到,如果&#39;团队&#39;始终是第一个词,我们可以使用sub

使其更紧凑
sub("team\\.(.*)", "\\1_team", names(d))