- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
! 列を選んで関数を適用する
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"
上記データを読み込むと、算数と英語は文字列型になってしまう。
そこで以下の処理をする。
* acrossで対象とする列を指定する(下記例は、対象としない列を除く方法)。
d %>%
mutate(
across(
.cols = !c("ID","name"),
.fns = ~{
if (is.character(.x)) {
if (is.character(.x)) { #.xはcolsで指定された列の一つずつを指す
if_else(.x == "欠席", NA_character_,.x) %>% as.numeric()
} else {
.x
}
}
)
)
#r-wakalangで@KDさんに教わった
この他、parse_numberを使う方法もある
:参照:
* https://qiita.com/shunido113/items/701844f03163ec413eb8