# ここにRコード
「ミクロ政治データ分析実習」第13回課題
一部の問題はこれまでの課題にて出題されたものである。必要に応じてこれまでの解答(宋が作成したものを含む)を参照しても良い。
セットアップ
問題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コード