列名の末尾にまとめて文字列をくっつける
やりたいこと
表題通り。
個人的に使った事例(のイメージ)としては、例えば店舗データとして、「売上、店舗規模、従業員数」があるとする。 これらのデータをもとに店舗の売上モデルを作成するときに、近隣店舗の情報もモデルに入れる場合、各列名の末尾に各店舗名をまとめて入れて「売上A店、店舗規模A店、従業員数A店、売上B店、店舗規模B店、従業員数B店」みたいなデータを作成したいときに使った。
データ
df = tibble(hogehoge = 1:4, fugafuga = 1:4, hogefuga = 1:4) # A tibble: 4 x 3 # hogehoge fugafuga hogefuga # <int> <int> <int> # 1 1 1 1 # 2 2 2 2 # 3 3 3 3 # 4 4 4 4
方法
rename_allまたはrename_atを使う。 これらは無名関数を使えるので、glue関数を利用する。
すべての列名に適応した場合はrename_all
df %>% rename_all(function(x) glue("{x}_XXX")) # A tibble: 4 x 3 # hogehoge_XXX fugafuga_XXX hogefuga_XXX # <int> <int> <int> # 1 1 1 1 # 2 2 2 2 # 3 3 3 3 # 4 4 4 4
選びたい列名に条件がある場合はrename_at
df %>% rename_at(vars(starts_with('hoge')), function(x) glue("{x}_XXX")) # A tibble: 4 x 3 # hogehoge_XXX fugafuga hogefuga_XXX # <int> <int> <int> # 1 1 1 1 # 2 2 2 2 # 3 3 3 3 # 4 4 4 4