5 課題

Author
Affiliation

佐久間 智広

神戸大学大学院経営学研究科

Published

2024/05/13

Modified

2024/06/24

1 実習課題について


  • 本日の課題は,第2回(Rの使い方)第4回(データの要約)の復習を兼ねた実習課題です。
  • 第2回資料と第4回資料を参照しながら課題に取り組んでください。
  • 分析コードや結果を指示に従ってmanabaの「2024/05/20実習課題」に提出してください。

2 準備

2.1 パッケージ

Code
#パッケージの読み込み
rm(list=ls()); gc();  gc();
if (!require("pacman")) install.packages("pacman")
pacman::p_load(tidyverse, magrittr, summarytools, here)
1
前の作業など,rのメモリに入っているものをリセットするコマンド
2
パッケージ管理用のパッケージであるpacmanが入っていない場合はインストール
3
複数のパッケージを一度に呼び出す

3 ヒント(便利な関数)


データの中から条件に適合する要素を取り出したい,みたいなことはよくあります(Excelだとピボットテーブル機能とかを使う場合です)。そんな際に役に立つ関数を2種類ご紹介しておきます。

課題には使っても使わなくても大丈夫ですが,うまく使えば同じことを便利にできる場合があります。

紹介する関数は,どちらもtidyverseパッケージの使用を前提としています。

3.1 使うデータ

第4回でも使った,学生のテストデータです。

Code
data3 <- here("data","3_test.csv") |> read_csv()
data3

3.2 filter()関数

filter()関数は,条件に合った行だけを取り出す関数です。例えば,男性だけのデータを取り出したい場合,以下のように指定します。

Code
data3 |> 
  filter(gender == "男") 
  1. どのデータを使うか指定し|>で,次の行に渡す
  2. filter()()内に条件を書く。
    • 多くのプログラム言語やエクセルで共通のように,条件を記載するときの「等しい」を表す場合は「==」のように,イコールを2回重ねて表記する
    • 「等しくない」は「!=」で表す
    • 文字列(chr)として認識されている場合は,「“男”」のように「“」で囲む必要がある(第3回資料参照)

テストが80点以上の人だけを取り出す場合は以下のようにできます。

Code
data3 |> 
  filter(test >= 80)

3.3 select()関数

select()関数は,指定した列だけを取り出す関数です。

Code
data3 |> 
  select(hometown)

特定の列だけ取り出して計算したいときなどに便利です

Code
data3 |> 
  select(test) |> 
  summary()
      test      
 Min.   : 10.0  
 1st Qu.: 40.0  
 Median : 60.0  
 Mean   : 60.0  
 3rd Qu.: 87.5  
 Max.   :100.0  

3.4 filterとselectの組み合わせ

Code
data3 |> 
  filter(gender == "女") |> 
  select(test) |> 
  summary()
      test    
 Min.   : 10  
 1st Qu.: 45  
 Median : 60  
 Mean   : 60  
 3rd Qu.: 85  
 Max.   :100  

上のコードでは,女性のデータ(行)のみを取り出し,test列だけを持ってきて,平均や中央値を算出(summary()関数)しています。

3.5 イメージ図

4 課題

4.1 データの説明と読み込み

4_population.csvデータは都道府県別の2020年の人口データです(e-statより)

  • ken: 都道府県名
  • population: 人口
  • male: 男性人口
  • female: 女性人口
  • japanese: 日本人人口
  • foreign: 外国人人口
  • birth: 出生数
  • death: 死亡数
  • in-population: 転入
  • out-population: 転出
  • household: 世帯数
  • dual-income: 共働世帯数
  • solo: 単身世帯数
  • marriage: 婚姻件数
  • divorce: 離婚件数
Code
population <- here('data','4_population.csv') |>
  read_csv()
head(population)
1
here()は,プロジェクト内のファイルがある場所を指定します。もし第2回授業の通りにプロジェクトを作成し,その中にdataフォルダを作成できていて,さらにそこに4_population.csvを入れられていたら,このコードで場所を正確に指定できます。
2
csvファイルを読み込むコードです
3
最初のいくつかの行(行数を指定しなければ6行)を表示します。

データの読み込みについて詳細は第2回資料を参照してください。

上の通り,4_population.csvデータをpopulationという名前をつけて読み込んで,以下の計算をしてください。(平均値・最大値・中央値等や,ヒストグラムの内容,プログラム方法は第4回資料,データの読み込み方やその他Rの使い方全般は第2回資料にあります)

4.2 課題

  1. 外国人人口の最大値,最小値,平均値,中央値を算出してください。その際使ったコードと,その結果を記載してください
    また,which.min()which.max()関数は,()内の変数の最大値が何行目なのかを教えてくれる関数です。これを使って,外国人人口が最小の都道府県と最大の都道府県を特定してください。コードと結果を記載してください
  2. 統計分析では授業で紹介した分散,標準偏差ではなく,不偏分散,不偏標準偏差という指標を使います。これらはそれぞれvar(),sd()コマンドで算出できます。このコードを使って人口(population)の不偏分散,不偏標準偏差を算出してください。コードと計算結果それぞれ載せてください
  3. 京都府の人口の偏差値は幾つですか?計算コードとその結果を記載してください。ただし,ここでいう偏差値は,一般的な学力偏差値と同じように平均50,標準偏差10とします(第4回資料参照)。
  4. 男性・女性人口の割合を知るために男性人口を人口で割った新しい変数genderを作成してください。その上でgenderの平均値・中央値を算出してください(変数の作り方は第2回資料にあります)。コードとその結果を記載してください。
  5. genderのヒストグラムをhist()関数を使って作ってください。コードだけ書いてください
  6. genderが平均よりも小さい県を列挙してください。コードと結果を記載してください