「マクロ政治データ分析実習」第4回課題

作者

情21-0170 関大太郎

公開

2024年10月17日

セットアップ

問題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_BagType_CupType_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