まずは蝋の翼から。

学んだことを書きながら確認・整理するためのメモブログ。こういうことなのかな?といったことをふわっと書いたりしていますが、理解が浅いゆえに的はずれなことも多々あると思うのでツッコミ歓迎

列名の末尾にまとめて文字列をくっつける

やりたいこと

表題通り。

個人的に使った事例(のイメージ)としては、例えば店舗データとして、「売上、店舗規模、従業員数」があるとする。 これらのデータをもとに店舗の売上モデルを作成するときに、近隣店舗の情報もモデルに入れる場合、各列名の末尾に各店舗名をまとめて入れて「売上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