2017-10-21 93 views
1

在left_join之後,我有變量var1.x var2.x ...和var1.y var2.y。我想將它們重命名爲var1_tot var2_totvar1_part var2_part。我可以做到這一點,但結合names和字符串替換功能。這可以通過使用dplyrrename函數和ends_with作爲dplyr鏈的一部分來完成嗎?重命名dplyr中的一堆變量

回答

4

是否這樣? 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 
+0

代替'sub'我使用''從stringr' str_replace'嘗試的,它DIT不行。 –

+0

我沒有使用'stringr',那麼你的意思是什麼? – www

+0

@ErichNewirth您是否調整了參數的順序以使用'str_replace'? –

-1

事實上

mydf %>% rename_at(vars(ends_with(".x")),funs(str_replace(.,".x","_total"))) 

沒有工作

+0

你原來的問題是關於'dplyr'中的'rename'和'ends_with'。是否有什麼特別的理由需要使用'stringr'中的'str_replace'?用'str_replace'替換'sub'並不會從根本上改變我的解決方案的性質。 – www