across(列名, 関数) #基本形
列名の部分には条件式が適用できるので、列の名称の文字の部分一致とか、列の型(数値型のみ。。など)による選択が可能。
関数は、sum, mean, sd, などの定番の他、functionで定義した自作関数も使える。
library(tidyverse) d <- " ID, name,国語,算数,英語 001, 太郎, 100, 90,欠席 002, 次郎, 90, 80, 20 003, 三郎, 80,欠席, 50 004, 花子, 70, 50, 100 005, 桃子, 60, 60, 90"
上記データを読み込むと、算数と英語は文字列型になってしまう。
そこで以下の処理をする。
d %>% mutate( across( .cols = !c("ID","name"), .fns = ~{ if (is.character(.x)) { #.xはcolsで指定された列の一つずつを指す if_else(.x == "欠席", NA_character_,.x) %>% as.numeric() } else { .x } } ) ) #r-wakalangで@KDさんに教わった
この他、parse_numberを使う方法もある