# ここにRコード「ミクロ政治データ分析実習」第10回課題
データハンドリング(1)
問題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を出力する。
- 1,684行 \(\times\) 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を出力すること。
- データの大きさが1,011行 \(\times\) 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