2017-10-21 24 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が最終出力です。実際

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

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

動作しなかった、それが動作しないDIT。 –

+0

私は 'stringr'を使用しませんでしたので、あなたのポイントは何ですか? – www

+0

@ErichNeuwirth 'str_replace'を使うために引数の順序を調整しましたか? –

-1

は、代わりに私がstringr` `から` str_replace`を使用してみました `sub`の

+0

元の質問は 'rename'と' dplyr'の 'ends_with'です。 'stringr'から' str_replace'を使う必要がある特別な理由はありますか? 'sub'を' str_replace'に置き換えても、私の解決策の性質は根本的に変わりません。 – www

関連する問題