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:q10q1からq10までの全ての列

~ 11 - .x (処理の指定)

acrossの2つ目の引数で、選択した列に何をするかを指定します。
ここでは逆転項目処理の計算式としています。

ちょっとややこしいのですが、以下のルールを知っておく必要があります。

  • ~ (チルダ): 「これから処理内容を書きます」という合図。
  • .x : acrossが処理している「その列自身」を指す代名詞です。

つまり、~ 11 - .x は「選択された各列の値(.x)を使って、11 - .xを計算しなさい」という意味になります。


全体の日本語訳

naiman_c2を使い、
 その中の『q4sで始まる名前の全列』に対して、
 それぞれ11からその値を引く』という計算で値を上書きし、
 その結果すべてをnaiman_c3に保存してね。」

?????

なんで11から引くの? → 前処理の逆転項目の章を参照