「マクロ政治データ分析実習」第4回課題
セットアップ
問題1: {tidyverse}と{summarytools}パッケージを読み込む。
# ここにRコード
問題2: LMSからダウンロードした期末レポート用データ(Macro_HW04.csv
)を読み込み、raw_df
という名のオブジェクトとして格納し、出力すること。
- データはプロジェクト・フォルダー内に
Data
というフォルダーを作成し、そこにアップロードしておくこと。 - データの読み込みは必ず
read_csv()
関数を使うこと(read.csv()
は使わない)。
# ここにRコード
# A tibble: 648 × 9
ID Company Type Name Soup Weight Calorie Salt Calcium
<dbl> <chr> <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 1 Marutai 3 博多とんこつラーメン Yes 92.5 335 5.9 0
2 2 Acecook 1 (袋)わかめラーメン… Yes 88 380 5.5 297
3 3 Nissin 1 お椀で食べるチキンラ… Yes 31 142 2.1 42
4 4 Myojo 2 みかさ監修 塩焼そば Yes 165 735 7 203
5 5 Nissin 1 0秒チキンラーメン Yes 75 362 2.2 286
6 6 Nissin 2 日清のどん兵衛 シビ辛… Yes 83 390 5.5 162
7 7 Toyo 1 マルちゃん正麺 豚骨… Yes 101 359 5.7 162
8 8 Myojo 2 チャルメラどんぶり コ… Yes 82 374 5.4 221
9 9 Acecook 2 スーパーカップ1.5… Yes 108 448 6.9 356
10 10 Marutai 2 縦型ちゃんぽん Yes 65 286 4.3 115
# ℹ 638 more rows
問題3: raw_df
の大きさ(行数と列数)を出力する。
# ここにRコード
[1] 648 9
問題4: raw_df
の変数名(列名)を出力する。
# ここにRコード
[1] "ID" "Company" "Type" "Name" "Soup" "Weight" "Calorie"
[8] "Salt" "Calcium"
変数名 | 説明 | 単位 | 欠損値 |
---|---|---|---|
ID |
商品ID | なし | |
Company |
メーカー | なし | |
Type |
1: 袋 / 2: カップ / 3: 棒 | なし | |
Name |
商品名 | なし | |
Soup |
No: 汁なし / Yes: 汁あり | なし | |
Weight |
容量 | g | なし |
Calorie |
熱量 | kcal | なし |
Salt |
食塩相当量 | g | なし |
Calcium |
カルシウム | mg | 0 |
データハンドリング
問題5: 麺の種類(Type
)、スープの有無(Soup
)、カルシウム含有量(Calcium
)をリコーディングする。リコーディング後、df
という新しい名のオブジェクトとして格納し、df
を出力すること。
- 麺の種類(
Type
)Type
の値が1
なら"Bag"
、2
なら"Cup"
、3
なら"Stick"
とする。- 条件式が2つ以上なので
case_when()
、recode()
の使用を推奨
- スープの有無(
Soup
)Soup
の値が"Yes"
なら1
、それ以外は0
とする。- 条件式が1つのみなので
if_else()
の使用を推奨
- カルシウム含有量(
Calcium
)Calcium
の値が0
の場合は欠損値とし、それ以外は元のCalcium
の値のままとする。- 条件式が1つのみなので
if_else()
の使用を推奨
# ここにRコード
# A tibble: 648 × 9
ID Company Type Name Soup Weight Calorie Salt Calcium
<dbl> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 Marutai Stick 博多とんこつラーメン 1 92.5 335 5.9 NA
2 2 Acecook Bag (袋)わかめラーメン… 1 88 380 5.5 297
3 3 Nissin Bag お椀で食べるチキンラ… 1 31 142 2.1 42
4 4 Myojo Cup みかさ監修 塩焼そば 1 165 735 7 203
5 5 Nissin Bag 0秒チキンラーメン 1 75 362 2.2 286
6 6 Nissin Cup 日清のどん兵衛 シビ辛… 1 83 390 5.5 162
7 7 Toyo Bag マルちゃん正麺 豚骨… 1 101 359 5.7 162
8 8 Myojo Cup チャルメラどんぶり コ… 1 82 374 5.4 221
9 9 Acecook Cup スーパーカップ1.5… 1 108 448 6.9 356
10 10 Marutai Cup 縦型ちゃんぽん 1 65 286 4.3 115
# ℹ 638 more rows
記述統計量の計算
問題6: df
データの容量(Weight
)の平均値を出力する。
# ここにRコード
[1] 96.16358
問題7: df
データのラーメンのタイプ(Type
)の度数分布表を出力する。
- {dplyr}の関数を利用し、3行2列の表として出力しても良い。
# ここにRコード
Bag Cup Stick
139 483 26
問題8: カルシウム含有量(Calcium
)の平均値をメーカー(Company
)ごとに出力する。カルシウム含有量の場合、一部の行に欠損値があることに注意すること。
- 参考)まるか食品はカルシウムをネット上に公開していない(つまり、まるか食品の場合、
Calcium
の値が全て欠損値となっている。)ため、NaN
になっている。
# ここにRコード
# A tibble: 10 × 2
Company Calcium
<chr> <dbl>
1 Acecook 243.
2 Daikoku 158.
3 House 135.
4 Maruka NaN
5 Marutai 203.
6 Myojo 154.
7 Nissin 136.
8 Nongshim 100
9 Sanyo 228.
10 Toyo 180.
可視化
問題9: 食塩相当量の平均値をメーカーごとに計算し、食塩相当量が高いメーカーが上位に位置するようにソートする。メーカーの列名はCompany
、食塩相当量の平均値の列名はSalt
とする。計算結果はsalt_df
という名の新しいオブジェクトとして作業環境に格納し、salt_df
を出力すること。
# ここにRコード
# A tibble: 10 × 2
Company Salt
<chr> <dbl>
1 Maruka 5.79
2 House 5.62
3 Marutai 5.41
4 Toyo 5.39
5 Myojo 5.35
6 Daikoku 5.32
7 Sanyo 4.99
8 Nissin 4.76
9 Acecook 4.73
10 Nongshim 3.81
問題10: salt_df
を使用し、以下のような棒グラフを作成する。メーカーの順番が食塩相当量の平均値に応じてソートされていることに注意すること(つまり、Company
列をfactor化する必要がある)。以下の例はBlack and whiteテーマで文字サイズは12ポイントだが、図が持つ情報が同じであれば、見た目は自由にカスタマイズしても良い。
# ここにRコード
問題11: df
を利用し、食塩相当量の箱ひげ図をメーカーごとに作成する。以下の例はBlack and whiteテーマで文字サイズは12ポイントだが、図が持つ情報が同じであれば、見た目は自由にカスタマイズしても良い。
# ここにRコード
問題12: 問題10と問題11の結果を比較し、平均値が持つ限界について述べよ。
ここに解釈
ダミー変数の作成
問題13: df
の麺の種類(Type
)は現在、文字型である。この変数を3つのダミー変数に変換する。ダミー変数の名前は以下の出力結果を参照すること。また、作成したダミー変数はType
変数の後ろに位置するよう修正すること。最終的にはdf
を上書きし、df
を出力する。
- {fastDummies}パッケージを使用しても良い。この場合、問題1で{fastDummies}も読み込んでおくこと。
# ここにRコード
# A tibble: 648 × 12
ID Company Type Type_Bag Type_Cup Type_Stick Name Soup Weight Calorie
<dbl> <chr> <chr> <dbl> <dbl> <dbl> <chr> <dbl> <dbl> <dbl>
1 1 Marutai Stick 0 0 1 博多と… 1 92.5 335
2 2 Acecook Bag 1 0 0 (袋)… 1 88 380
3 3 Nissin Bag 1 0 0 お椀で… 1 31 142
4 4 Myojo Cup 0 1 0 みかさ… 1 165 735
5 5 Nissin Bag 1 0 0 0秒チ… 1 75 362
6 6 Nissin Cup 0 1 0 日清の… 1 83 390
7 7 Toyo Bag 1 0 0 マルち… 1 101 359
8 8 Myojo Cup 0 1 0 チャル… 1 82 374
9 9 Acecook Cup 0 1 0 スーパ… 1 108 448
10 10 Marutai Cup 0 1 0 縦型ち… 1 65 286
# ℹ 638 more rows
# ℹ 2 more variables: Salt <dbl>, Calcium <dbl>
記述統計表の出力
問題14: {summarytools}パッケージを利用し、df
の記述統計量を計算する。記述統計量を計算する変数は麺の種類のダミー変数(Type_Bag
、Type_Cup
、Type_Stick
)、スープの有無(Soup
)、容量(Weight
)、熱量(Calorie
)、食塩相当量(Salt
)、カルシウム含有量(Calcium
)である。変数の表示順番、出力する記述統計量は以下の出力結果を参照すること。
# ここにRコード
Descriptive Statistics
Mean Std.Dev Min Max N.Valid
---------------- -------- --------- ------- --------- ---------
Type_Bag 0.21 0.41 0.00 1.00 648.00
Type_Cup 0.75 0.44 0.00 1.00 648.00
Type_Stick 0.04 0.20 0.00 1.00 648.00
Soup 1.00 0.00 1.00 1.00 648.00
Weight 96.16 45.70 20.00 878.00 648.00
Calorie 409.62 214.11 91.00 4184.00 648.00
Salt 5.09 1.72 1.50 24.60 648.00
Calcium 177.10 76.54 16.00 559.00 541.00