1日目:R入門とデータの読み込み

R入門

RとRstudioのインストール,R言語の基本操作については,インターネットで探しとたくさん資料が見付かります。また関連書籍もたくさん出版されているので,自分で調べてみてください。 とりわけ浅野・中村著「はじめてのRstudio: エラーメッセージなんかこわくない」オーム社が最初の1冊としてお勧めです。

はじめてのRstudio (Amazon.co.jpへのリンク)

ここではまず、基本関数を用いて,用意されたデータを読み込み,データの特徴を確認するために記述統計(descriptive statistics)を出力する方法を学びます。

データの読み込み

ここでは、手元にcsvファイルがあることを想定しています。 大学生ならMS Excelの.xlsxファイルがデータが記録されたものとして馴染みがあると思いますが、ここではよりシンプルな構造のcsvファイルとして作成されたデータを読み込むことが多いです。

Rには最初からcsvファイルを読み込むための基本関数read.csv()があります。

実際にcsvファイルを読み出すときは、基本関数read.csv()よりも、より高性能なtidyversereadrパッケージのread_csv()関数を使うことが多いです。

df <- read.csv("data/d1_2.csv", header = TRUE)

基本関数read.csv()では、header = TRUEというオプションを付けて1行目は変数名であることを明示します。

記述統計量

データが読み込めたら、そのデータの特徴を見るために,記述統計量(descriptive statistics)を確認します。 ここでは基本関数summary()を用いてデータの特徴を確認してみましょう。

       ID             age             sex           eduy          house    
 Min.   : 1.00   Min.   :27.00   Min.   :1.0   Min.   : 9.0   Min.   :1.0  
 1st Qu.: 3.25   1st Qu.:33.50   1st Qu.:1.0   1st Qu.:12.0   1st Qu.:2.0  
 Median : 5.50   Median :41.00   Median :1.0   Median :12.5   Median :2.5  
 Mean   : 5.50   Mean   :41.20   Mean   :1.2   Mean   :13.8   Mean   :2.3  
 3rd Qu.: 7.75   3rd Qu.:46.75   3rd Qu.:1.0   3rd Qu.:17.0   3rd Qu.:3.0  
 Max.   :10.00   Max.   :56.00   Max.   :2.0   Max.   :18.0   Max.   :3.0  

各変数の最小値min、第1四分位1st Qu.、中央値median、平均値mean、第3四分位3rd Qu.、最大値maxが出力されています。 ここで注意しなければならないのは、数値それ自体に意味がなく、数値にカテゴリーが割り当てられているカテゴリー変数である性別のsexや住宅所有状況のhouseの平均を計算しても意味が無いです。

男性なら1、女性なら2という数値が割り当てられている変数の平均とは?

そこで、カテゴリー変数を数値型から因子型factorに変換します。 ファクター型に変換するには基本関数as.factor()を用います。

df$sex <- as.factor(df$sex)
df$house <- as.factor(df$house)

再度,記述統計を表示します。

       ID             age        sex        eduy      house
 Min.   : 1.00   Min.   :27.00   1:8   Min.   : 9.0   1:2  
 1st Qu.: 3.25   1st Qu.:33.50   2:2   1st Qu.:12.0   2:3  
 Median : 5.50   Median :41.00         Median :12.5   3:5  
 Mean   : 5.50   Mean   :41.20         Mean   :13.8        
 3rd Qu.: 7.75   3rd Qu.:46.75         3rd Qu.:17.0        
 Max.   :10.00   Max.   :56.00         Max.   :18.0        

変数sexhouseはカテゴリーごとの度数が示されるようになり,適切な記述統計量が計算できていることが分かります。

tidyverseで実行

次に、超便利なパッケージ集であるtidyverseを使って上記の分析を再度実行してみます。 tidyverse整然データ(tidy data)というコンピューターが扱いやすい形式のデータに対して、統一した記述方法で可読性の高いソースコードを書けるように作られた,データ処理、分析、可視化といったデータサイエンスのためのパッケージ集です。

tidyverseパッケージとskimrパッケージを使い,情報量の多い記述統計量の表を作成します。 まずはパッケージのインストールと読み出しを行います。

pacman::p_load(
  tidyverse,
  skimr
)

準備ができたのでtidyverseのreadr::read_csv()を用いてcsvファイルを読み込みます。 read_csv()関数はオプションのcol_typesを用いて,変数のタイプを指定できます。 iが整数,fファクター型を表します。

df <- read_csv("data/d1_2.csv", col_types="iifif")
summary(df)
       ID             age        sex        eduy      house
 Min.   : 1.00   Min.   :27.00   1:8   Min.   : 9.0   3:5  
 1st Qu.: 3.25   1st Qu.:33.50   2:2   1st Qu.:12.0   1:2  
 Median : 5.50   Median :41.00         Median :12.5   2:3  
 Mean   : 5.50   Mean   :41.20         Mean   :13.8        
 3rd Qu.: 7.75   3rd Qu.:46.75         3rd Qu.:17.0        
 Max.   :10.00   Max.   :56.00         Max.   :18.0        

readrパッケージのread_csv()関数は高速かつ柔軟なオプション設定が可能なため、csvファイルを読み込む際にはread.csv()よりもread_csv() を使うことが多いです。

データを読み込めたので、次はskimパッケージの関数skim()を用いてデータの概要を出力し、データの概要を確認します。

skim()はキレイな記述統計量の表を作成

df %>% skim()
Data summary
Name Piped data
Number of rows 10
Number of columns 5
_______________________
Column type frequency:
factor 2
numeric 3
________________________
Group variables None

Variable type: factor

skim_variable n_missing complete_rate ordered n_unique top_counts
sex 0 1 FALSE 2 1: 8, 2: 2
house 0 1 FALSE 3 3: 5, 2: 3, 1: 2

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
ID 0 1 5.5 3.03 1 3.25 5.5 7.75 10 ▇▇▇▇▇
age 0 1 41.2 10.15 27 33.50 41.0 46.75 56 ▅▇▁▇▅
eduy 0 1 13.8 3.16 9 12.00 12.5 17.00 18 ▂▇▃▁▆