library(tidyverse)課題1:
配布したフォルダに含まれる、“data/practive1.csv”をインポートして利用してください。(インポートするところからが練習問題です)
インポートすると、id,height(身長[cm]),weight(体重[kg])という列名を持つ表となっているはずです。
課題2
身長をcm単位のデータからm単位のデータにして、height_mという列名に入れてください。。(例えば、121[cm]であれば、100でわると、1.21[m]と、メートル単位になります。Rでは割り算は 121/100のように表します。)
課題3
height_mを二乗して、hm_squaredという名前の列を作成してください。
課題4
weightとhm_squaredからBMI(body mass index)を計算して、bmi1という列名に保存しください。BMIの計算式は、体重[kg] ÷ (身長[m] * 身長[m])です。
課題5
weightとheightからBMIを計算して、bmi2という列名に保存してください。
それでは、動画をとめてどうぞ:
できましたか?
課題1:解答
“data/practice1.csv”をインポートする
dat <- read_csv("data/practice1.csv")Rows: 10 Columns: 3
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
dbl (3): id, height, weight
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
dat# A tibble: 10 × 3
id height weight
<dbl> <dbl> <dbl>
1 1 138. 60.5
2 2 153. 50.0
3 3 161. 54.5
4 4 127. 71.3
5 5 154. 89.2
6 6 155. 67.8
7 7 144. 59.8
8 8 145. 51.8
9 9 144. 53.3
10 10 141. 118.
課題2
身長をcm単位のデータからm単位のデータにして、height_mという列名に入れてください。
dat2 <- dat %>%
mutate(height_m = height/100)
dat2# A tibble: 10 × 4
id height weight height_m
<dbl> <dbl> <dbl> <dbl>
1 1 138. 60.5 1.38
2 2 153. 50.0 1.53
3 3 161. 54.5 1.61
4 4 127. 71.3 1.27
5 5 154. 89.2 1.54
6 6 155. 67.8 1.55
7 7 144. 59.8 1.44
8 8 145. 51.8 1.45
9 9 144. 53.3 1.44
10 10 141. 118. 1.41
課題3
height_mを二乗して、hm_squaredという名前の列を作成してください。
dat3 <- dat2 %>%
mutate(hm_squared = height_m * height_m)
dat3# A tibble: 10 × 5
id height weight height_m hm_squared
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 138. 60.5 1.38 1.90
2 2 153. 50.0 1.53 2.33
3 3 161. 54.5 1.61 2.59
4 4 127. 71.3 1.27 1.60
5 5 154. 89.2 1.54 2.38
6 6 155. 67.8 1.55 2.40
7 7 144. 59.8 1.44 2.08
8 8 145. 51.8 1.45 2.09
9 9 144. 53.3 1.44 2.08
10 10 141. 118. 1.41 1.99
あるいは、
dat3 <- dat2 %>%
mutate(hm_squared = height_m^2)
dat3# A tibble: 10 × 5
id height weight height_m hm_squared
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 138. 60.5 1.38 1.90
2 2 153. 50.0 1.53 2.33
3 3 161. 54.5 1.61 2.59
4 4 127. 71.3 1.27 1.60
5 5 154. 89.2 1.54 2.38
6 6 155. 67.8 1.55 2.40
7 7 144. 59.8 1.44 2.08
8 8 145. 51.8 1.45 2.09
9 9 144. 53.3 1.44 2.08
10 10 141. 118. 1.41 1.99
A^xでAのx乗という意味になります。
課題4
weightとhm_squaredからBMI(body mass index)を計算して、bmi1という列名に保存しください。
dat4 <- dat3 %>%
mutate(bmi1 = weight/hm_squared)
dat4# A tibble: 10 × 6
id height weight height_m hm_squared bmi1
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 138. 60.5 1.38 1.90 31.8
2 2 153. 50.0 1.53 2.33 21.4
3 3 161. 54.5 1.61 2.59 21.1
4 4 127. 71.3 1.27 1.60 44.5
5 5 154. 89.2 1.54 2.38 37.5
6 6 155. 67.8 1.55 2.40 28.2
7 7 144. 59.8 1.44 2.08 28.7
8 8 145. 51.8 1.45 2.09 24.8
9 9 144. 53.3 1.44 2.08 25.6
10 10 141. 118. 1.41 1.99 59.4
課題5
weightとheightからBMIを計算して、bmi2という列名に保存してください。
dat5 <- dat4 %>%
mutate(bmi2 = weight/((height/100)^2))
dat5# A tibble: 10 × 7
id height weight height_m hm_squared bmi1 bmi2
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 138. 60.5 1.38 1.90 31.8 31.8
2 2 153. 50.0 1.53 2.33 21.4 21.4
3 3 161. 54.5 1.61 2.59 21.1 21.1
4 4 127. 71.3 1.27 1.60 44.5 44.5
5 5 154. 89.2 1.54 2.38 37.5 37.5
6 6 155. 67.8 1.55 2.40 28.2 28.2
7 7 144. 59.8 1.44 2.08 28.7 28.7
8 8 145. 51.8 1.45 2.09 24.8 24.8
9 9 144. 53.3 1.44 2.08 25.6 25.6
10 10 141. 118. 1.41 1.99 59.4 59.4
一致していましたか?
bmi1の手順、mutate関数1個で書くのであれば、
dat# A tibble: 10 × 3
id height weight
<dbl> <dbl> <dbl>
1 1 138. 60.5
2 2 153. 50.0
3 3 161. 54.5
4 4 127. 71.3
5 5 154. 89.2
6 6 155. 67.8
7 7 144. 59.8
8 8 145. 51.8
9 9 144. 53.3
10 10 141. 118.
dat %>%
mutate(
height_m = height/100,
hm_squared = height_m^2,
bmi1 = weight/hm_squared
)# A tibble: 10 × 6
id height weight height_m hm_squared bmi1
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 138. 60.5 1.38 1.90 31.8
2 2 153. 50.0 1.53 2.33 21.4
3 3 161. 54.5 1.61 2.59 21.1
4 4 127. 71.3 1.27 1.60 44.5
5 5 154. 89.2 1.54 2.38 37.5
6 6 155. 67.8 1.55 2.40 28.2
7 7 144. 59.8 1.44 2.08 28.7
8 8 145. 51.8 1.45 2.09 24.8
9 9 144. 53.3 1.44 2.08 25.6
10 10 141. 118. 1.41 1.99 59.4
と書くこともできますし、パイプをつなげて書くのであれば、
dat %>%
mutate(height_m = height/100) %>%
mutate(hm_squared = height_m^2) %>%
mutate(bmi1 = weight/hm_squared)# A tibble: 10 × 6
id height weight height_m hm_squared bmi1
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 138. 60.5 1.38 1.90 31.8
2 2 153. 50.0 1.53 2.33 21.4
3 3 161. 54.5 1.61 2.59 21.1
4 4 127. 71.3 1.27 1.60 44.5
5 5 154. 89.2 1.54 2.38 37.5
6 6 155. 67.8 1.55 2.40 28.2
7 7 144. 59.8 1.44 2.08 28.7
8 8 145. 51.8 1.45 2.09 24.8
9 9 144. 53.3 1.44 2.08 25.6
10 10 141. 118. 1.41 1.99 59.4
と書いてもOKです。
(個人的にはmutate関数毎の変数作成する癖がありますが、これは好き好きでよいと思います。)
以上、mutate関数の説明でした。次は変数名を操作する関数をご紹介していきます