# ここにRコード「ミクロ政治データ分析実習」第13回課題
可視化(1)
一部の問題はこれまでの課題にて出題されたものである。必要に応じてこれまでの解答(宋が作成したものを含む)を参照しても良い。
セットアップ
問題1: {tidyverse}パッケージを読み込む。
問題2: LMSからダウンロードした課題用データ(Micro_HW13.csv)を読み込み、それぞれraw_dfという名のオブジェクトとして格納し、出力すること。
- データはプロジェクト・フォルダー内に
Dataというフォルダーを作成し、そこにアップロードしておくこと。 read.csv()関数でなく、read_csv()関数を使用すること。read.csv()関数を使用する場合、サンプルページと異なる見た目の結果が出力される。むろん、減点対象である。
# ここにRコード# A tibble: 1,684 × 10
ID Quiz1 Quiz2 Quiz3 Quiz4 Quiz5 Quiz6 Gender Age Educ
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 3 4 3 1 1 1 1 73 3
2 5 8 8 8 8 8 8 2 94 1
3 11 8 8 8 8 8 1 2 57 3
4 51 3 2 8 8 1 1 2 62 3
5 104 3 2 4 8 8 1 1 50 4
6 108 3 4 4 8 8 1 2 57 4
7 124 3 1 2 1 1 1 1 78 1
8 133 3 8 4 8 8 8 1 64 1
9 139 3 4 4 8 1 1 2 57 3
10 152 3 4 4 8 8 1 1 44 4
# ℹ 1,674 more rows
問題3: raw_dfの大きさ(行数と列数)を出力する。
# ここにRコード[1] 1684 10
問題4: raw_dfの変数名(列名)を出力する。
# ここにRコード [1] "ID" "Quiz1" "Quiz2" "Quiz3" "Quiz4" "Quiz5" "Quiz6" "Gender"
[9] "Age" "Educ"
| 変数名 | 説明 | 備考 | 欠損値 |
|---|---|---|---|
ID |
回答者のID | なし | |
Quiz1 |
政治に関するクイズの回答 (1) | 正解: 3 | なし |
Quiz2 |
政治に関するクイズの回答 (2) | 正解: 4 | なし |
Quiz3 |
政治に関するクイズの回答 (3) | 正解: 3 | なし |
Quiz4 |
政治に関するクイズの回答 (4) | 正解: 1 | なし |
Quiz5 |
政治に関するクイズの回答 (5) | 正解: 1 | なし |
Quiz6 |
政治に関するクイズの回答 (6) | 正解: 1 | なし |
Gender |
回答者の性別 | 1=男性 / 2=女性 | なし |
Age |
回答者の年齢 | なし | |
Educ |
回答者の最終学歴 | 高いほど高学歴 | 9 |
データハンドリング
問題5: raw_dfのQuiz1からQuiz6変数を正解なら1、それ以外は0になるように再コーディングし、既存の変数に上書きする。続いて、Quiz1からQuiz6までの合計を計算し、Knowledgeという列として追加する。最後にQuiz1からQuiz6までの列を削除する。以上の結果をraw_dfに上書きし、raw_dfを出力すること。
# ここにRコード# A tibble: 1,684 × 5
ID Gender Age Educ Knowledge
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 1 73 3 6
2 5 2 94 1 0
3 11 2 57 3 1
4 51 2 62 3 3
5 104 1 50 4 2
6 108 2 57 4 3
7 124 1 78 1 4
8 133 1 64 1 1
9 139 2 57 3 4
10 152 1 44 4 3
# ℹ 1,674 more rows
問題6: raw_dfのAge、Gender、Educをリコーディングする。
Age変数:Ageの値が35以下であれば"若年層"、65以下であれば"中年層"、それ以外は"高齢層"とリコーディングし、Age_Jという名の列として追加する。Gender変数:Genderの値が1であれば"男性"、それ以外は"女性"とリコーディングし、Gender_Jという名の列として追加する。Gender_J変数:Gender_J変数をfactor化し、要素の順番は"女性"、"男性"とする。Educ変数:Educ変数の9であれば、欠損値とし、それ以外は既存のEducの変数の値のままとする。Educ変数:Educの値が4であれば"大卒以上"、それ以外は"大卒未満"とリコーディングし、Educ_Jという名の列として追加する。Educが欠損している行を除外する。- 以上の結果を
dfという名のオブジェクトとして作業環境内に格納し、dfを出力する。
出力される変数(列)の順番は以下の例と一致しなくても良い。
# ここにRコード# A tibble: 1,670 × 8
ID Gender Age Educ Knowledge Age_J Gender_J Educ_J
<dbl> <dbl> <dbl> <dbl> <dbl> <chr> <fct> <chr>
1 1 1 73 3 6 高齢層 男性 大卒未満
2 5 2 94 1 0 高齢層 女性 大卒未満
3 11 2 57 3 1 中年層 女性 大卒未満
4 51 2 62 3 3 中年層 女性 大卒未満
5 104 1 50 4 2 中年層 男性 大卒以上
6 108 2 57 4 3 中年層 女性 大卒以上
7 124 1 78 1 4 高齢層 男性 大卒未満
8 133 1 64 1 1 中年層 男性 大卒未満
9 139 2 57 3 4 中年層 女性 大卒未満
10 152 1 44 4 3 中年層 男性 大卒以上
# ℹ 1,660 more rows
可視化
ヒストグラム
問題7: dfのAge変数のヒストグラムを出力する。ヒストグラムの棒の数は15個にする。横軸のラベルは「年齢」、縦軸のラベルは「人数」とする。また、横軸の目盛りを20歳から100歳まで、10歳刻みにすること。棒の枠線の色は白("white")とする。作成した図はhist_plot1という名のオブジェクトとして作業環境内に格納し、hist_plot1を出力する。自分で図をより見やすくカスタマイズしても良い。
# ここにRコード問題8: 問題7で作成したhist_plot1を性別(Gender_J)ごとにファセット分割する。2つのファセットが1行で表示されるようにすること。自分で図をより見やすくカスタマイズしても良い。
# ここにRコード棒グラフ
問題9: 世代(Age_J)の値ごとに政治的知識量(Knowledge)の平均値を計算し、df2という名のオブジェクトとして格納する。平均値が格納される列名はKnowledgeとする。最後にdf2を出力すること。
# ここにRコード# A tibble: 3 × 2
Age_J Knowledge
<chr> <dbl>
1 中年層 2.47
2 若年層 1.97
3 高齢層 2.30
問題10: df2を用い、以下のような棒グラフを作成する。自分で図をより見やすくカスタマイズしても良い。
# ここにRコード問題11: 問題10の図の横軸は「高齢層 > 若年層 > 中年層」になっているが、これを「若年層 > 中年層 > 高齢層」にしたい。df2のAge_Jを要素の順番が若年層、中年層、高齢層になるようにfactor化し、以下のような棒グラフを作成する。自分で図をより見やすくカスタマイズしても良い。
# ここにRコード問題12: 世代 (Age_J)と教育水準(Educ_J)の値ごとに政治的知識量(Knowledge)の平均値を計算し、df3という名のオブジェクトとして格納する。平均値が格納される列名はKnowledgeとする。最後にdf3を出力すること。
# ここにRコード# A tibble: 6 × 3
Age_J Educ_J Knowledge
<chr> <chr> <dbl>
1 中年層 大卒以上 3.31
2 中年層 大卒未満 2.24
3 若年層 大卒以上 2.13
4 若年層 大卒未満 1.89
5 高齢層 大卒以上 3.81
6 高齢層 大卒未満 2.11
問題13: 問題13で作成したdf3を利用する。横軸は世代(Age_J)、縦軸は政治的知識量の平均値(Knowledge)とした棒グラフを作成する。また、棒グラフを教育水準(Educ_J)を基準とし、2つのファセットに分割する。面と横軸の順番、ラベルは以下の図を参照すること。更に自分で図を見やすくカスタマイズしても良い。
- 以下のような図にするためには
Age_JとEduc_Jのfactor化が必要である。
# ここにRコード問題14: 問題13で作成したdf3を利用する。横軸は世代(Age_J)、縦軸は政治的知識量の平均値(Knowledge)とした棒グラフを作成する。また、各棒は教育水準(Educ_J)で色分けする。横軸、色の順番、ラベルは以下の図を参照すること。更に自分で図を見やすくカスタマイズしても良い。
- 以下のような図にするためには
Age_JとEduc_Jのfactor化が必要である。
# ここにRコード