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

作者

情21-0170 関大花子

公開

2023年6月13日

問題1: {tidyverse}パッケージを読み込む。

# ここにRコード

問題2: LMSからダウンロードした課題用データ(Micro_HW10.csv)を読み込み、raw_dfという名のオブジェクトとして格納し、出力すること。

# ここに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_dfQuiz1から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を出力する。

# ここに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: df1Quiz1からQuiz6までの列(Quiz1Quiz2Quiz3Quiz4Quiz5Quiz6)を削除し、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の欠損値の処理を行う。EducationIncomeIdeologyは特定の値が欠損値を意味する(問題4の表を参照すること)。たとえば、Educationの値が9の場合、これは欠損を意味する。各変数において欠損値を意味する値をNANA_real_)に変更する。以上の結果は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: df1EucationIncomeIdeologyのいずれかの変数が欠損している行を除外する。また、Ageが90以下、かつIncomeが10以下の行を抽出する。以上の結果はdf1に上書きし、df1を出力すること。

# ここに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: df1GenderEducationをcharacter型変数に再コーディングする。Genderの値が1なら"Male"、それ以外は"Female"とする。また、Educationの値が1なら"Low"、4なら"High"、それ以外は"Middle"とする。それぞれの変数名はGender_CEducation_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: df1Education_Cの値ごとにIdeologyの平均値、標準偏差、最小値、最大値を計算し、それぞれMeanSDMinMaxという列として出力する。各グループに属するケース数も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)の平均値、標準偏差、最小値、最大値を計算し、それぞれMeanSDMinMaxという列として出力する。各グループに属するケース数も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