重命名 dplyr 中的一堆变量

Eri*_*rth 1 r dplyr

在 left_join 之后,我有变量var1.x var2.x... 和var1.y var2.y。我想将它们重命名为var1_tot var2_totvar1_part var2_part。我可以做到这一点,但是组合names和字符串替换功能。dplyr这可以通过使用dplyrrename函数 和来作为链的一部分来完成吗ends_with

www*_*www 6

像这样?dt是一个示例数据框。dt2是最终的输出。

library(dplyr)

dt <- data_frame(var1.x = 1:3, var2.x = 4:6, var1.y = 7:9, var2.y = 10:12)

dt2 <- dt %>%
  rename_at(vars(ends_with(".x")), funs(sub(".x", "_tot", .))) %>%
  rename_at(vars(ends_with(".y")), funs(sub(".y", "_part", .)))
dt2
# A tibble: 3 x 4
  var1_tot var2_tot var1_part var2_part
     <int>    <int>     <int>     <int>
1        1        4         7        10
2        2        5         8        11
3        3        6         9        12
Run Code Online (Sandbox Code Playgroud)