P4.2. across関数で複数列をまとめて処理する
naiman_c3 <- naiman_c2 %>%
mutate(across(
starts_with(“q4s”),
~ 11 – .x ))
このコードは、これまで学んだ<-, %>%, mutateに、以下の3つの新しい要素が加わっています。
① across() (一括処理)
mutateの中で使い、「たくさんの列に、同じ処理をまとめて実行する」ための関数です。
across(【対象の列】, 【実行する処理】)という構成で使います。
② starts_with("q4s") (対象の選択)
acrossの1つ目の引数で、どの列を処理対象にするかを選びます。
ここでは「q4sという文字で名前が始まるすべての列」を選択しています。
他にも、以下のような選び方ができます。
ends_with("_a"):_aで終わる列contains("scale"):scaleを含む列q1:q10:q1からq10までの全ての列
③ ~ 11 - .x (処理の指定)
acrossの2つ目の引数で、選択した列に何をするかを指定します。
ここでは逆転項目処理の計算式としています。
ちょっとややこしいのですが、以下のルールを知っておく必要があります。
~(チルダ): 「これから処理内容を書きます」という合図。.x:acrossが処理している「その列自身」を指す代名詞です。
つまり、~ 11 - .x は「選択された各列の値(.x)を使って、11 - .xを計算しなさい」という意味になります。
全体の日本語訳
「naiman_c2を使い、
その中の『q4sで始まる名前の全列』に対して、
それぞれ『11からその値を引く』という計算で値を上書きし、
その結果すべてをnaiman_c3に保存してね。」
?????
なんで11から引くの? → 前処理の逆転項目の章を参照

