R-搜索并替换功能重命名列



我有这样的数据框架

> 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

我可以使用重命名字符串来完成此操作,但由于数据量庞大而想使用搜索和替换选项非常感谢

基于OP帖子中显示的示例,似乎.之后的后缀部分应为前缀和Viceversa。在这种情况下,我们可以使用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,如果"团队"始终是第一个单词,我们可以使其更加紧凑,而sub

sub("team\.(.*)", "\1_team", names(d)) 

最新更新