Exploratory コミュニティ

numericの列の合計

#1

Numericの列が10列あります。他の列は文字列です。
1行1IDとなっています。
Numericの列すべてを合計して、現在の10列に加えて、合計の列を作ることは可能なのでしょうか?
列名を+で繋げていくことは、作業でエラーが発生しそうで避けたいです。
numericを指定したりできないでしょうか?

#2

Exploratoryで好きな機能はブランチとパラメータです。

ブランチ大好きな私としては、そこでブランチ切って、

  1. ワイド型からロング型へ(Gather)
  2. 集計

でIDごとに値を集計し、
もとのデータフレームにIDでJoinしちゃいますかねぇ。

※質問の主旨としては、numeric型のカラムを一括で処理できないか、ということだと思うので、
若干力技的な感じがしますが:sweat_smile:

#3

なるほど!
分からないスクリプトを探して書くよりも、できそうです。
ありがとうございます。

#4

あっ、というか、ワイド型からロング型にするときに、列名選択のところで、
「すべての数値列」を選択すれば、一個一個列を選択しなくても良くなるので、
概ねご要望に沿うのではないでしょうか。

#5

その方法もありますね。やってみます!

#6

なんどもすみません。
コード一発のやり方も調べてみました。

apply(.[sapply(.,is.numeric)],1,sum)

でいけますね!

# apply系はもっと勉強が必要だ・・・・

#7

Takahashiさん、Yatsuuさん

計算を作成で下記のコードを書くことで、数値列の全ての列の合計値を求めて新しく列を作成できます。

sum(across(where(is.numeric)))

image

1 Like
#8

白戸さん
ありがとうございます。できました。
自分自身でacross, where関数とか、様々な関数の組合せというところに、なかなか行き着かないので、応用が課題です・・。

#9

自分自身のメモも兼ねて参考情報:
Exploratory Hour #106 - 複数の数値列の平均値を行ごとに求めたい

  1. ”カスタムRコマンドで”rowwise()
  2. mutateで計算したい関数とc_across, 列指定
  3. ungroupでrowwise解除。
    列指定部分のバリエーションも動画で説明あり。

別の記事

1 Like