df <- read.csv("data/d1_2.csv", header = TRUE)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()よりも、より高性能なtidyverseのreadrパッケージのread_csv()関数を使うことが多いです。
基本関数read.csv()では、header = TRUEというオプションを付けて1行目は変数名であることを明示します。
記述統計量
データが読み込めたら、そのデータの特徴を見るために,記述統計量(descriptive statistics)を確認します。 ここでは基本関数summary()を用いてデータの特徴を確認してみましょう。
summary(df) 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()を用います。
再度,記述統計を表示します。
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
変数sexとhouseはカテゴリーごとの度数が示されるようになり,適切な記述統計量が計算できていることが分かります。
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()| 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 | ▂▇▃▁▆ |