# ここにRコード
「ミクロ政治データ分析実習」第10回課題
問題1: {tidyverse}パッケージを読み込む。
問題2: LMSからダウンロードした課題用データ(Micro_HW10.csv
)を読み込み、raw_df
という名のオブジェクトとして格納し、出力すること。
- データはプロジェクト・フォルダー内に
Data
というフォルダーを作成し、そこにアップロードしておくこと。 read.csv()
関数でなく、read_csv()
関数を使用すること。read.csv()
関数を使用する場合、サンプルページと異なる見た目の結果が出力される。
# ここにRコード
# A tibble: 1,684 × 12
ID Quiz1 Quiz2 Quiz3 Quiz4 Quiz5 Quiz6 Gender Age Educ Income Ideology
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 3 4 3 1 1 1 1 73 3 99 4
2 5 8 8 8 8 8 8 2 94 1 88 5
3 11 8 8 8 8 8 1 2 57 3 99 6
4 51 3 2 8 8 1 1 2 62 3 99 5
5 104 3 2 4 8 8 1 1 50 4 8 4
6 108 3 4 4 8 8 1 2 57 4 9 7
7 124 3 1 2 1 1 1 1 78 1 4 8
8 133 3 8 4 8 8 8 1 64 1 3 4
9 139 3 4 4 8 1 1 2 57 3 3 3
10 152 3 4 4 8 8 1 1 44 4 7 NA
# ℹ 1,674 more rows
問題3: raw_df
の大きさ(行数と列数)を出力する。
# ここにRコード
[1] 1684 12
問題4: raw_df
の変数名(列名)を出力する。
# ここにRコード
[1] "ID" "Quiz1" "Quiz2" "Quiz3" "Quiz4" "Quiz5"
[7] "Quiz6" "Gender" "Age" "Educ" "Income" "Ideology"
各変数の詳細は以下の通りである。
変数名 | 説明 | 備考 | 欠損値 |
---|---|---|---|
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 |
Income |
回答者の世帯収入 | 大きいほど高収入 | 88 & 99 |
Ideology |
回答者の政治的イデオロギー | 大きいほど保守 | 88 & 99 |
問題5: raw_df
のQuiz1
からQuiz6
変数を正解なら1、それ以外は0になるように再コーディングし、既存の変数に上書きする。結果はdf1
という名のオブジェクトとして格納し、df1
を出力すること。
# ここにRコード
# A tibble: 1,684 × 12
ID Quiz1 Quiz2 Quiz3 Quiz4 Quiz5 Quiz6 Gender Age Educ Income Ideology
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 1 1 1 1 1 1 1 73 3 99 4
2 5 0 0 0 0 0 0 2 94 1 88 5
3 11 0 0 0 0 0 1 2 57 3 99 6
4 51 1 0 0 0 1 1 2 62 3 99 5
5 104 1 0 0 0 0 1 1 50 4 8 4
6 108 1 1 0 0 0 1 2 57 4 9 7
7 124 1 0 0 1 1 1 1 78 1 4 8
8 133 1 0 0 0 0 0 1 64 1 3 4
9 139 1 1 0 0 1 1 2 57 3 3 3
10 152 1 1 0 0 0 1 1 44 4 7 NA
# ℹ 1,674 more rows
問題6: df1
のクイズの正解数を政治知識として定義したい。Quiz1
からQuiz6
までの合計を計算し、Knowledge
という列として追加する。追加されたKnowledge
列の位置はQuiz1
の前とする。以上の結果をdf1
に上書きし、df1
を出力する。
- 1684行13列であることを確認すること。サンプルページでは12列しか表示されていないが、省略された列(
Ideology
)の存在は出力結果の下段に明示されている。
# ここにRコード
# A tibble: 1,684 × 13
ID Knowledge Quiz1 Quiz2 Quiz3 Quiz4 Quiz5 Quiz6 Gender Age Educ Income
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 6 1 1 1 1 1 1 1 73 3 99
2 5 0 0 0 0 0 0 0 2 94 1 88
3 11 1 0 0 0 0 0 1 2 57 3 99
4 51 3 1 0 0 0 1 1 2 62 3 99
5 104 2 1 0 0 0 0 1 1 50 4 8
6 108 3 1 1 0 0 0 1 2 57 4 9
7 124 4 1 0 0 1 1 1 1 78 1 4
8 133 1 1 0 0 0 0 0 1 64 1 3
9 139 4 1 1 0 0 1 1 2 57 3 3
10 152 3 1 1 0 0 0 1 1 44 4 7
# ℹ 1,674 more rows
# ℹ 1 more variable: Ideology <dbl>
問題7: df1
のQuiz1
からQuiz6
までの列を削除し、Educ
の変数名をEducation
に変更する。以上の結果はdf1
に上書きし、df1
を出力すること。
# ここにRコード
# A tibble: 1,684 × 7
ID Knowledge Gender Age Education Income Ideology
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 6 1 73 3 99 4
2 5 0 2 94 1 88 5
3 11 1 2 57 3 99 6
4 51 3 2 62 3 99 5
5 104 2 1 50 4 8 4
6 108 3 2 57 4 9 7
7 124 4 1 78 1 4 8
8 133 1 1 64 1 3 4
9 139 4 2 57 3 3 3
10 152 3 1 44 4 7 NA
# ℹ 1,674 more rows
問題8: df1
の欠損値の処理を行う。Education
、Income
、Ideology
は特定の値が欠損値を意味する(問題4の表を参照すること)。たとえば、Education
の値が9の場合、これは欠損を意味する。各変数において欠損値を意味する値をNA
に変更する。以上の結果はdf1
に上書きし、df1
を出力すること。
# ここにRコード
# A tibble: 1,684 × 7
ID Knowledge Gender Age Education Income Ideology
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 6 1 73 3 NA 4
2 5 0 2 94 1 NA 5
3 11 1 2 57 3 NA 6
4 51 3 2 62 3 NA 5
5 104 2 1 50 4 8 4
6 108 3 2 57 4 9 7
7 124 4 1 78 1 4 8
8 133 1 1 64 1 3 4
9 139 4 2 57 3 3 3
10 152 3 1 44 4 7 NA
# ℹ 1,674 more rows
問題9: df1
のEducation
、Income
、Ideology
のいずれかの変数が欠損している行を除外する。また、Age
が90以下、かつIncome
が10以下の行を抽出する。以上の結果はdf1
に上書きし、df1
を出力すること。
- データの大きさが1011行、7列であることを確認すること。
# ここにRコード
# A tibble: 1,011 × 7
ID Knowledge Gender Age Education Income Ideology
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 104 2 1 50 4 8 4
2 108 3 2 57 4 9 7
3 124 4 1 78 1 4 8
4 133 1 1 64 1 3 4
5 139 4 2 57 3 3 3
6 209 2 2 61 2 5 10
7 236 0 1 44 2 1 5
8 311 0 2 67 2 3 2
9 322 1 1 41 4 8 7
10 331 1 1 35 3 4 7
# ℹ 1,001 more rows
問題10: df1
のGender
とEducation
をcharacter型変数に再コーディングする。Gender
の値が1なら"Male"
、それ以外は"Female"
とする。また、Education
の値が1なら"Low"
、4なら"High"
、それ以外は"Middle"
とする。それぞれの変数名はGender_C
、Education_C
と名付けて列を追加すること。最後にEducation_C
をfactor化し、要素の順番は"Low"
、"Middle"
、"High"
とする。以上の結果はdf1
に上書きし、df1
を出力すること。
# ここにRコード
# A tibble: 1,011 × 9
ID Knowledge Gender Age Education Income Ideology Gender_C Education_C
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <fct>
1 104 2 1 50 4 8 4 Male High
2 108 3 2 57 4 9 7 Female High
3 124 4 1 78 1 4 8 Male Low
4 133 1 1 64 1 3 4 Male Low
5 139 4 2 57 3 3 3 Female Middle
6 209 2 2 61 2 5 10 Female Middle
7 236 0 1 44 2 1 5 Male Middle
8 311 0 2 67 2 3 2 Female Middle
9 322 1 1 41 4 8 7 Male High
10 331 1 1 35 3 4 7 Male Middle
# ℹ 1,001 more rows
問題11: df1
のEducation_C
の値ごとにIdeology
の平均値、標準偏差、最小値、最大値を計算し、それぞれMean
、SD
、Min
、Max
という列として出力する。各グループに属するケース数もN
という名の列として出力すること。出力される結果の列名Education_C
はEducation
に修正する。以上の結果はdf2
という名のオブジェクトとして格納し、df2
を出力すること。
# ここにRコード
# A tibble: 3 × 6
Education Mean SD Min Max N
<fct> <dbl> <dbl> <dbl> <dbl> <int>
1 Low 5.58 2.11 0 10 156
2 Middle 5.41 1.93 0 10 654
3 High 4.98 2.06 0 10 201
問題12: df1
の性別(Gender_C
)ごとの世帯収入(Income
)の平均値、標準偏差、最小値、最大値を計算し、それぞれMean
、SD
、Min
、Max
という列として出力する。各グループに属するケース数もN
という名の列として出力すること。出力される結果の列名Gender_C
はGender
に修正する。以上の結果はdf3
という名のオブジェクトとして格納し、df3
を出力すること。
# ここにRコード
# A tibble: 2 × 6
Gender Mean SD Min Max N
<chr> <dbl> <dbl> <dbl> <dbl> <int>
1 Female 4.40 2.55 1 10 499
2 Male 4.36 2.45 1 10 512