r - 搜索和替换功能以重命名列

标签 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

我可以通过重命名字符串来做到这一点,但由于数据量巨大而想使用搜索和替换选项 非常感谢提前

最佳答案

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

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

或者另一种选择是按 . 分割字符串,然后在颠倒顺序后粘贴

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

或者正如 @jota 在评论中提到的,如果“team”始终是第一个词,我们可以使用 sub 使其更加紧凑

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

关于r - 搜索和替换功能以重命名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37849594/

相关文章:

c# - 重命名 WinForms 窗体的标题

r - 如何在 R 中绘制直方图?

r - 在 R 的 ifelse 语句中添加列中多个整数范围的值

r - 如何在R中创建因子交互变量?为什么我不能直接乘法?

python - 在 Pandas 中如何使用 drop_duplicates 有一个异常(exception)?

python - 如何根据单列上的多个 StringMethods 高效且惯用地过滤 PandasDF 的行?

rename - 重命名 Mac OS X 应用程序

android - 重命名APK中的包名称

r - 来自 "sampling"的 strata() 返回错误 : arguments imply differing number of rows

标记化时从法语冠词缩写中删除特殊撇号