「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。データ分析・語学に力点を置いています。 →現在、コンサルタントの雛になるべく、少しずつ勉強中です(※2024年1月21日改訂)。

MENU

Rでtidyverseを活用する(その01/X)

 \mathrm{R}で今や主流である\mathrm{RStudio}\mathrm{tidyverse}を学ぶべく

を読んでいく。
 なお以降で読み込むファイルは、本書著者が公開している\mathrm{gitHub}から取得した*1

0. はじめに

 \mathrm{R}を用いて一連のデータ分析ワークフローを遂行する流れを学んでいく。

  • \mathrm{R}による分析ワークフローの完結
  • 充実した\mathrm{RStudio}機能の紹介
  • \mathrm{tidyverse}へ準拠
  1. 分析環境の整備
  2. データ取得
  3. データ加工
  4. 可視化
  5. 分析
  6. レポーティング

0.1. tidyverseとは

 \mathrm{tidyverse}は様々な操作を統一的なインターフェースで直感的に行える「\mathrm{tidy}なツール群」を目指すものである。
 バージョン1.3.0ではたとえば以下のパッケージが読み込まれる:

  • \mathrm{ggplot2}:データを可視化するためのパッケージ
  • \mathrm{dplyr}:データに様々な操作を加えるためのパッケージ
  • \mathrm{tidyr}:データは\mathrm{tidy\ data}の形式に変形するためのパッケージ
  • \mathrm{readr}:様々なフォーマットのデータを読み書きするためのパッケージ
  • \mathrm{purrr}関数型プログラミングのためのパッケージ
  • \mathrm{tibble}\mathrm{tibble}というモダンな\mathrm{data.frame}パッケージ
  • \mathrm{stringr}:文字列を操作するためのパッケージ
  • \mathrm{forcats}:因子型ベクトルを操作するためのパッケージ

1. RStudioの基礎

1.1 RStudioのインターフェイス

 \mathrm{RStudio}の画面構成において、それぞれの区切られた画面をペインと呼ぶ。

ペイン名
ショートカット
概要
\mathrm{Source} \mathrm{Ctrl+1} コードやコメントが書かれたソースコードを表示するペイン。読み込んだオブジェクトをプレビューするときにも用いられる
\mathrm{Console} \mathrm{Ctrl+1} \mathrm{Source}ペインに書かれたコードの実行や、ささいなコマンドを直接入力して実行するためのペイン
\mathrm{Terminal} \mathrm{alt+shift+M} \mathrm{RStudio}内でターミナル操作をするためのペイン
\mathrm{Jobs} - \mathrm{Jobs}機能を操作するためのペイン
\mathrm{Help} \mathrm{Ctrl+3} 関数やパッケージのヘルプを表示するペイン
\mathrm{History} \mathrm{Ctrl+4} 過去に実行したコマンドを記録しておくペイン
\mathrm{Files} \mathrm{Ctrl+5} ワーキングディレクトリにあるファイルを表示するペイン
\mathrm{Plots} \mathrm{Ctrl+6} 図を表示するペイン
\mathrm{Packages} \mathrm{Ctrl+7} インストールされているパッケージを表示するペイン
\mathrm{Environment} \mathrm{Ctrl+8} 読み込んだデータや作成した変数、関数など、現在のワークスペース上にあるオブジェクトを表示するペイン。[Import Dataset]ボタンからは、コマンドを使わずにクリックのみでファイルを読み込み可能である
\mathrm{Connections} - データベースとの接続を設定するためのペイン
\mathrm{Tutorial} - \mathrm{Learnr}パッケージで作られたチュートリアルを使って基本操作を学習するペイン
\mathrm{Viewer} \mathrm{Ctrl+9} \mathrm{HTML}出力を表示するペイン

1.2 プロジェクト機能

 複数の分析案件に関わっているときに、データや分析コードを案件ごとに管理するのを実現するのをプロジェクト機能という。
 新たにプロジェクトを作るのには、\left[\mathrm{New\ Project}\right]を選択し\left[\mathrm{New\ Directory}\right]\left[\mathrm{New\ Project}\right]を選ぶ。その後、名前などを設定すれば新しく作成できる。

1.3 Rスクリプトの新規作成と保存

 プロジェクト作成後、\mathrm{R}スクリプトを書く。\left[\mathrm{File}\right]\left[\mathrm{New\ File}\right]\left[\mathrm{R\ Script}\right]の順でクリップするか、左上のボタンから作成する。

1.4 ファイルの読み込み

 \mathrm{R}の標準関数でファイルを読み込むといくつか問題点がある一方で、\mathrm{tidyverse}を用いた方が望ましいと言われる。

1.4.1 Rの標準関数の問題点

 標準関数によるファイルの読み込みには以下の問題点がある:

  • データの大きさ

     ファイルサイズが大きい場合、時間がかかる
  • 読み込み型

     読み込み後のデータ操作や分析がしにくい場合が多い
1.4.2 readrパッケージ

 \mathrm{read}_\mathrm{csv}()を用いると、より早く読込ができる・

library("tidyverse")


folder <- ".../SampleData-master/SampleData-master/csv/Sales.csv"

# 
system.time(
  dat <- read.csv(folder)
)

#
system.time(
  dat2 <- read_csv(folder, 
                   col_types =cols(
                     col_character(),
                     col_character(),
                     col_datetime()))
)
  • 読込列の型を指定する関数
略字
元の関数
意味
\mathrm{c} \mathrm{col}_\mathrm{character}() 文字列
\mathrm{i} \mathrm{col}_\mathrm{integer}() 整数
\mathrm{d} \mathrm{col}_\mathrm{double}() 実数
\mathrm{l} \mathrm{col}_\mathrm{logical}() \mathrm{TRUE}または\mathrm{FALSE}
\mathrm{D} \mathrm{col}_\mathrm{date}(\mathrm{format}='') 日付
\mathrm{t} \mathrm{col}_\mathrm{time}(\mathrm{format}='') 時間
\mathrm{T} \mathrm{col}_\mathrm{datetime}(\mathrm{format}='') 日付時間
\mathrm{n} \mathrm{col}_\mathrm{number}() 数字以外の文字を無視して数字とする
\mathrm{f} \mathrm{col}_\mathrm{factor}(\mathrm{levels},\mathrm{ordered}) 因子型
? \mathrm{col}_\mathrm{guess}() 推測する
_ \mathrm{col}_\mathrm{skip}() 列を読まない
1.4.3 エンコーディングの指定

 エンコーディング指定のミスにより文字化けが起こるのを防ぐには、

library("tidyverse")


folder <- ".../SampleData-master/SampleData-master/csv/"


guess_encoding(paste0(folder,"Products.csv"))
guess_encoding(paste0(folder,"Products_cp932.csv"))

product_enc <- read_csv(paste0(folder,"Products_cp932.csv"),
                        locale = locale(encoding = "CP932"))
print(product_enc)
  • \mathrm{readr}パッケージで使える主な引数
引数
デフォルトの値
意味
\mathrm{col}_\mathrm{names} \mathrm{TRUE} 列名
\mathrm{na} \mathrm{c("","NA")} 欠損値を表す文字列
\mathrm{comment} "" コメント開始文字列
\mathrm{skip} \emptyset 先頭の無視する行数
\mathrm{n}_\mathrm{max} \mathrm{Inf} 読み込む最大データ行列
\mathrm{trim}_\mathrm{ws} \mathrm{TRUE} 前後の空白文字を無視する
1.4.4 ファイルの書き出し
write_csv(iris, file = "iris_tidy.csv")
1.4.5 Excelファイルの読み込み
dat_xl <- read_excel(".../file.xlsx", sheet = 1)

1.5 RやRStudioで困ったときは

 \mathrm{R}\mathrm{RStudio}で困ったときには、以下の方法で情報を得るとヒントが得られる。

  • ヘルプを使う

     
  • \boldsymbol{\mathrm{vignette}}

     \mathrm{vignette}()関数により、より詳細に解説を記載した\boldsymbol{\mathrm{vignette}}を呼び出すことができる。
  • チートシートを使う

     \mathrm{RStudio}社が開発したパッケージの一部は、\left[\mathrm{Help}\right]\left[\mathrm{Cheatsheets}\right]から閲覧できる。
  • コマンドパレット

     コマンドパレットから、コマンド一覧より目的のものを選んで実行することができるようになる。
プライバシーポリシー お問い合わせ