R入門とデータの読み込み

勉強 1日目

Soichi Matsuura https://so-ichi.com/ (Ritsumeikan University)http://www.ritsumei.ac.jp/
2019-11-27

はじめに

この講義ノートは,松浦が総合心理学部の授業に潜入してRによる統計分析についての個人的な学習備忘録です。 この目的は,大人数の受講生に対して統計環境Rを用いた実習形式で実証会計についての講義を行うためのノウハウを吸収することです。

この資料はすべてRmarkdownで作成されており,使われているテーマはDistillです。 松浦が主として利用しているのはMacであるため,RファイルやRmdファイル,csvファイルの文字コードはすべてUTF-8です。

第1章 R入門

RとRstudioのインストール,R言語の基本操作については,関連書籍がたくさん出版されているので,各自で学習しておく必要がある。 とりわけ浅野・中村著「はじめてのRstudio: エラーメッセージなんかこわくない」オーム社が最初の1冊としてお勧めです。

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

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

データの読み込み

主として,Rではcsvファイルとして作成されたデータを読み込むことが多い。 最初から組み込まれている基本関数read.csv()を用いて,csvファイルを読み込む。


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

記述統計量

データの特徴を見るために,記述統計量を確認する。 ここでは基本関数summary()を用いてデータの特徴を確認する。


summary(df)

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

定性的な情報を示すカテゴリー変数である性別のsexや住宅所有状況のhouseの平均を計算しても意味が無いので,これらの変数の型を数値からfactorに変更する。関数as.factor()を用いる。


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

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


summary(df)

       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パッケージを使い,情報量の多い記述統計量の表を作成する。 まずはパッケージのインストールと読み出しを行う。


# install.packages("tidyverse") # first-time only
# install.packages("skimr") # first-time only
library(tidyverse)
library(skimr)

tidyverseのreadr::read_csv()を用いてcsvファイルを読み込む。 オプションのcol_typesを用いて,変数のタイプを指定できる。 iが整数,fファクターである。


df <- readr::read_csv("d1_2.csv", col_types="iffii")

skimパッケージの関数skim()を用いてデータの概要を出力する。


df %>% skim()

Skim summary statistics
 n obs: 10 
 n variables: 5 

─ Variable type:factor ───────────────────────────
 variable missing complete  n n_unique                 top_counts
      age       0       10 10        9 46: 2, 55: 1, 33: 1, 36: 1
      sex       0       10 10        2          1: 8, 2: 2, NA: 0
 ordered
   FALSE
   FALSE

─ Variable type:integer ───────────────────────────
 variable missing complete  n mean   sd p0   p25  p50   p75 p100
     eduy       0       10 10 13.8 3.16  9 12    12.5 17      18
    house       0       10 10  2.3 0.82  1  2     2.5  3       3
       ID       0       10 10  5.5 3.03  1  3.25  5.5  7.75   10
     hist
 ▂▁▇▂▂▁▁▆
 ▃▁▁▅▁▁▁▇
 ▇▃▃▃▃▃▃▇