potisanのプログラミングメモ

趣味のプログラマーがプログラミング関係で気になったことや調べたことをいつでも忘れられるようにメモするブログです。はてなブログ無料版なので記事の上の方はたぶん広告です。記事中にも広告挿入されるみたいです。

R&tidyverse mutate_atによる列単位変換の列選択方法

tidyverseではmutate_at関数で列を指定して列単位で変換できます。ここでは列選択の方法をいくつか紹介します。

library(tidyverse)

data <- as_tibble(iris)

# 3列目以降の列を文字列に変換したtibbleを作成する。
# 整数範囲または`vars(n:last_col())`を使います。
data %>% mutate_at(3:ncol(.), as.character)
data %>% mutate_at(vars(3:last_col()), as.character)

# 3列目以降最後から2番目の列を文字列に変換したtibbleを作成する。
# 整数範囲または`vars(n:last_col(nth))`を使います。
data %>% mutate_at(3:(ncol(.) - 1), as.character)
data %>% mutate_at(vars(3:last_col(1)), as.character)

# 3列目以降の列以外を文字列に変換したtibbleを作成する。
# 負の整数範囲または`vars(-n:-last_col())`を使います。
data %>% mutate_at(-3:-ncol(.), as.character)
data %>% mutate_at(vars(-3:-last_col()), as.character)

# 3列目以降最後から2番目の列以外を文字列に変換したtibbleを作成する。
# 負の整数範囲または`vars(-n:-last_col(nth))`を使います。
data %>% mutate_at(-3:-(ncol(.) - 1), as.character)
data %>% mutate_at(vars(-3:-last_col(1)), as.character)

# Sepal.Length、Sepal.Width列を文字列に変換したtibbleを作成する。
# c(列名ベクトル)またはvars(列名1, 列名2, ...)を使います。
data %>% mutate_at(c("Sepal.Length", "Sepal.Width"), as.character)
data %>% mutate_at(vars(Sepal.Length, Sepal.Width), as.character)

# Sepal.Length、Sepal.Width列以外を文字列に変換したtibbleを作成する。
# vars(-列名1, -列名2, ...)を使います。
data %>% mutate_at(vars(-Sepal.Length, -Sepal.Width), as.character)

# 最後の列を文字列に変換したtibbleを作成する。
# vars(last_col())を使います。
data %>% mutate_at(vars(last_col()), as.character)
data %>% mutate_at(vars(last_col(0)), as.character)

#最後から2つ前の列を文字列に変換したtibbleを作成する。
# vars(last_col(nth))を使います。
data %>% mutate_at(vars(last_col(2)), as.character)