第3回の宿題の締め切りを11月1日(金曜日) 23:59まで延長しました。
宿題のウエブサイトの容量を増やしました。
宿題のパッケージをインストールするコードをアップデートしました。
注意: 質問は複数選択です。すべての正しい答えを選んでください。
または、gosocrative.com で joho2024を入力
データが手に入ると、まだ解析に使えない状態であることが多いです。
データの整理(「wrangling」)は解析に使えるように整えるプロセスです。
students_analysis
プロジェクトを再度開きます。新しいコマンドの勉強に進む前に、今までのスクリプトを少し変更したいと思います。
先のスライドで説明したように、データ解析を行う前にデータの整理が必要なケースが多いです。
今回のstudents.csv
に入っているデータもその一例です。
students.csv
を読み込む際には、まずstudents_raw
という名前にしましょう。raw
はこれが生データ(読み込んだデータのまま、何も手を加えていない状態)を示します。これから学ぶ関数の共通点:
関数(データフレーム, 他の設定)
➞ データフレーム
データフレームの列名は任意ですが、使いやすい名前には以下の特徴があります:
`Full Name`
は打ちづらいです。`
もありますし、スペースも入っています。
おすすめ:小文字のみを使用し、スペースの代わりに_
を使う
rename()
で列名を変えるrename()
は列名を変更する関数です。
新しい名前 = 前の名前
と指定します。# A tibble: 6 × 5
`Student ID` full_name favourite.food mealPlan AGE
<dbl> <chr> <chr> <chr> <chr>
1 1 Sunil Huffmann Strawberry yoghurt Lunch only 4
2 2 Barclay Lynn French fries Lunch only 5
3 3 Jayendra Lyne N/A Breakfast and lunch 7
4 4 Leon Rossini Anchovies Lunch only <NA>
5 5 Chidiegwu Dunkel Pizza Breakfast and lunch five
6 6 Güvenç Attila Ice cream Lunch only 6
# A tibble: 6 × 5
`Student ID` full_name favourite.food mealPlan AGE
<dbl> <chr> <chr> <chr> <chr>
1 1 Sunil Huffmann Strawberry yoghurt Lunch only 4
2 2 Barclay Lynn French fries Lunch only 5
3 3 Jayendra Lyne N/A Breakfast and lunch 7
4 4 Leon Rossini Anchovies Lunch only <NA>
5 5 Chidiegwu Dunkel Pizza Breakfast and lunch five
6 6 Güvenç Attila Ice cream Lunch only 6
<-
を使わない限り、関数の結果は保存されません。`Student ID`
という列を使いやすい列名に変更してください。
rename()
で列名を変える# A tibble: 6 × 5
student_id full_name favourite.food mealPlan AGE
<dbl> <chr> <chr> <chr> <chr>
1 1 Sunil Huffmann Strawberry yoghurt Lunch only 4
2 2 Barclay Lynn French fries Lunch only 5
3 3 Jayendra Lyne N/A Breakfast and lunch 7
4 4 Leon Rossini Anchovies Lunch only <NA>
5 5 Chidiegwu Dunkel Pizza Breakfast and lunch five
6 6 Güvenç Attila Ice cream Lunch only 6
名前を一つずつ変更するのは手間がかかります。
clean_names()
という関数が列名を一気にきれいにしてくれます。
tidyverse
に含まれていないパッケージ、janitor
に入っているため、まずはjanitor
をロードする必要があります。# A tibble: 6 × 5
student_id full_name favourite_food meal_plan age
<dbl> <chr> <chr> <chr> <chr>
1 1 Sunil Huffmann Strawberry yoghurt Lunch only 4
2 2 Barclay Lynn French fries Lunch only 5
3 3 Jayendra Lyne N/A Breakfast and lunch 7
4 4 Leon Rossini Anchovies Lunch only <NA>
5 5 Chidiegwu Dunkel Pizza Breakfast and lunch five
6 6 Güvenç Attila Ice cream Lunch only 6
これをstudents_renamed
として保存しましょう。
mutate()
で列の中身を変える「mutate」は「変化させる」という意味です。
age
は数字のはずですが、文字として読み込まれてしまいました。修正しましょう。
# A tibble: 6 × 5
student_id full_name favourite_food meal_plan age
<dbl> <chr> <chr> <chr> <dbl>
1 1 Sunil Huffmann Strawberry yoghurt Lunch only 4
2 2 Barclay Lynn French fries Lunch only 5
3 3 Jayendra Lyne N/A Breakfast and lunch 7
4 4 Leon Rossini Anchovies Lunch only NA
5 5 Chidiegwu Dunkel Pizza Breakfast and lunch NA
6 6 Güvenç Attila Ice cream Lunch only 6
parse_number()
は文字列を数字に変換する関数です。
Warning: 1 parsing failure
という注意が出ました。これは、データの中にうまく数字に変換できなかった値があったことを意味しています。
本当は修正した方が良いですが、少し上級な話になりますので今回は飛ばします。詳しく知りたい方は教科書を読んでいただくか、講義後に質問してください。
students
として保存します。arrange()
で行を並び替えるarrange()
は行の順序を並び替える関数です。
meal_plan
」)の順に並び替えましょう。# A tibble: 6 × 5
student_id full_name favourite_food meal_plan age
<dbl> <chr> <chr> <chr> <dbl>
1 3 Jayendra Lyne N/A Breakfast and lunch 7
2 5 Chidiegwu Dunkel Pizza Breakfast and lunch NA
3 1 Sunil Huffmann Strawberry yoghurt Lunch only 4
4 2 Barclay Lynn French fries Lunch only 5
5 4 Leon Rossini Anchovies Lunch only NA
6 6 Güvenç Attila Ice cream Lunch only 6
arrange()
で行を並び替えるデフォルト設定では、arrange()
は小さい方から大きい方へと並び替えます。
逆の順にするには、列名をdesc()
の中に書きます。
# A tibble: 6 × 5
student_id full_name favourite_food meal_plan age
<dbl> <chr> <chr> <chr> <dbl>
1 1 Sunil Huffmann Strawberry yoghurt Lunch only 4
2 2 Barclay Lynn French fries Lunch only 5
3 4 Leon Rossini Anchovies Lunch only NA
4 6 Güvenç Attila Ice cream Lunch only 6
5 3 Jayendra Lyne N/A Breakfast and lunch 7
6 5 Chidiegwu Dunkel Pizza Breakfast and lunch NA
学生の名前の順に並び替えてください。
filter()
で行を絞り込む生データが必要以上に多い場合がよくあります(特に「ビッグデータ」を扱っているとき)。
filter()
で条件を設定し、その行だけに絞り込みます。
# A tibble: 3 × 5
student_id full_name favourite_food meal_plan age
<dbl> <chr> <chr> <chr> <dbl>
1 1 Sunil Huffmann Strawberry yoghurt Lunch only 4
2 2 Barclay Lynn French fries Lunch only 5
3 3 Jayendra Lyne N/A Breakfast and lunch 7
データの比較を行う主な記号:
>
より大きい<
より小さい==
イコール(=
ではありません!)|
あるいは&
そして(複数条件の指定)比較の記号のアウトプットは論理ベクトルです。
rename()
は列の名前を変更する。arrange()
は行を並び替える。mutate()
は列の中身を変える。filter()
は行を絞り込む。