第3章 データフレーム ・ ノック 40 / 100 ・ [[000 - はじめに(使い方と目次)|目次]]<br>
← 前 [[039 - 条件に合う行を取り出す]] ・ 次 → [[041 - 組み込みデータ iris を呼び出す]]
> [!info] 既存の列から新しい列を計算して追加する
> データ分析では、既存の列を組み合わせて新しい指標を計算することがよくあります。たとえばBMI(体格指数)は体重(kg)÷ 身長(m)² で計算します。Rでは `df$新列名 <- 計算式` と書くだけで、計算結果を新しい**列**としてデータフレームに追加できます。
>
> `df$bmi` という列がまだなければ自動的に作られます。身長を cm から m に変換するには `df$height / 100` と書き、それを2乗するには `(df$height / 100)^2` のように `^2` を付けます。既存の列を使った計算なので、全行分が一度に計算されて追加されます。
## 問題
データフレーム `df` に BMI(= 体重 ÷ 身長² 、身長の単位はm)を計算した列 `bmi` を追加して、結果を表示してみましょう。
> [!tip] ヒント
> 身長は cm で入っているので、`df$height / 100` でメートルに変換します。2乗は `^2` で表します。
> [!success]- 回答を見る
> ```r
> df <- data.frame(name = c("佐藤","鈴木","高橋"), height = c(160,172,168), weight = c(55,68,60))
> df$bmi <- df$weight / (df$height / 100)^2
> df
> ```
> ```
> name height weight bmi
> 1 佐藤 160 55 21.48437
> 2 鈴木 172 68 22.98540
> 3 高橋 168 60 21.25850
> ```
> `bmi` 列が右端に追加されています。3人とも計算式が一度に適用されていることが分かります。