我有这样的数据框架
> 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))