20170312 r言語環境構築&dplyr ハンズオン

36
R⾔語 環境構築&dplyr ハンズオン 20170312 ⼤城

Upload: nobuaki-oshiro

Post on 16-Apr-2017

308 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: 20170312 r言語環境構築&dplyr ハンズオン

R⾔語環境構築&dplyr

ハンズオン20170312

⼤城

Page 2: 20170312 r言語環境構築&dplyr ハンズオン

⽬的

• 後半のセッションの前提知識を得てもらう• dplyrを使うための環境構築(+マークダウンで再現性を確保)• dplyrの基本的な関数を使ってみる

Page 3: 20170312 r言語環境構築&dplyr ハンズオン

⽬次• Rの導⼊• RStudioの導⼊• RStudioを使ってみる

• Rマークダウン• knitr

• サンプルデータ(kaggle)• CSVファイル読み込み

• ファイル読み込み• データを⾒てみる

• いくつか集計• データフレーム操作

• パッケージインストール• dplyr

• dplyrで集計• 選択• グループ集計• 列を追加• 結合

• ファイル出⼒• write.csv• 再度knitr

Page 4: 20170312 r言語環境構築&dplyr ハンズオン

Rの導⼊• 以下のURLより各環境に合ったRをインストールして下さい• https://cran.ism.ac.jp/

Page 5: 20170312 r言語環境構築&dplyr ハンズオン

RStudioの導⼊• 下記URLよりRStudioをダウンロードしてインストールして下

さい• https://www.rstudio.com/products/rstudio/download/• 通常は「Installers for Supported Platforms」のもの

Page 6: 20170312 r言語環境構築&dplyr ハンズオン

RStudioを使ってみる• Mac版であれば以下のアイコンで起動できます

Page 7: 20170312 r言語環境構築&dplyr ハンズオン

画⾯説明

図やパッケージなど

変数など

コンソール

マークダウン

各種メニュー

Page 8: 20170312 r言語環境構築&dplyr ハンズオン

例えば : irisデータをコンソールで操作# irisデータの例# シャープでコメントが記述可能plot(iris) #データの散布図を描画head(iris) #先頭6件のデータ表⽰

Page 9: 20170312 r言語環境構築&dplyr ハンズオン

Rマークダウン• 処理の再現性を確保するためにRマークダウンのプロジェクトを作

成します(必須ではありませんが、推奨)• 左上のメニューから「R Markdown…」を選択• その後関連パッケージをインストールするか聞かれるので「yes」を

押下

Page 10: 20170312 r言語環境構築&dplyr ハンズオン

Rマークダウン• プロジェクト名をつけたい場合はTitleの「UnTitled1」の部分

を書き換え• 「OK」を押下した後はRマークダウンの雛形ができる

Page 11: 20170312 r言語環境構築&dplyr ハンズオン

Rマークダウン Knit• 「Knit」ボタンを押下するとRマークダウンを実⾏してHTML

に変換してくれる• 初回はHTMLファイルの保存先を聞かれるので適当に選択

Page 12: 20170312 r言語環境構築&dplyr ハンズオン

Rマークダウン Knit 実⾏結果• 基本的には```{r}と```で括られている部分がRのスクリプトとして

実⾏される(細かいオプションは割愛)• ちなみに保存したHTMLファイルを直接配ればブラウザベースの簡

易レポートととしても使える(閲覧者はR導⼊不要)

Page 13: 20170312 r言語環境構築&dplyr ハンズオン

下準備• 説明をシンプルにするため、サンプルを書き換えて⼀旦以下の

コードブロックのみ作成して下さい

---title: "Untitled"output: html_document---

```{r}

```

ここにコードを書いていく

Page 14: 20170312 r言語環境構築&dplyr ハンズオン

下準備• 先ほどのirisデータをマークダウンで試してみましょう• コードを書いた後は範囲選択して右上の「Run」ボタンから「Run Selected

Line(s)」で実⾏できます• Macなら「command+Enter」 でもいけます

---title: "Untitled"output: html_document---

```{r}plot(iris)

```

ここにコードを書いていく

Page 15: 20170312 r言語環境構築&dplyr ハンズオン

実⾏結果

Page 16: 20170312 r言語環境構築&dplyr ハンズオン

サンプルデータ(kaggle)• Irisデータだけだとちょっとイメージが湧きにくいので、今回はリク

ルートのkaggleチャレンジより以下の2データをダウンロードします(ポンパレのデータを切り出したものとのこと)• https://www.kaggle.com/c/coupon-purchase-prediction/data

1. クーポンデータ : coupon_detail_train.csv2. ユーザーデータ : user_list.csv.zip

※kaggleとは• データ分析コンペのプラットフォーム及びその運営会社• 課題⽤の実データをマスクした、サンプルデータも多数提供されている• コンペの詳細はこちら

http://www.recruit.jp/news_data/release/2015/0716_15946.html

Page 17: 20170312 r言語環境構築&dplyr ハンズオン

kaggleのアカウントがない⽅(github)• 取り急ぎ、以下のgithubにもサンプルデータとしてコピーを置

いていますので、ご参照ください

• https://github.com/doradora09/sampledata/tree/master/kaggle_recruit_challenge

1. クーポンデータ : coupon_detail_train.csv2. ユーザーデータ : user_list.csv (解凍済み)

• なお1に関しては、⼩さなサンプルとして「coupon_detail_train_head_1000.csv」も置いてますので、お好みでダウロードしてください

Page 18: 20170312 r言語環境構築&dplyr ハンズオン

やりたいこと• 今回は先ほどの2データを⽤いて以下のデータ操作を⾏います1. ファイルの読み込み2. データの確認3. 簡易集計4. dplyrで簡易集計5. dplyrで2つのデータを組み合わせる6. ファイル出⼒7. マークダウン出⼒

Page 19: 20170312 r言語環境構築&dplyr ハンズオン

ファイルの読み込み• read.csv関数でcsvファイルを読み込み、結果をdataと⾔う名前の変数に保存し

ます• Rではデータの代⼊に <- を使います(⼀応他⾔語同様の = も動作する模様)• read.csvはstringsAsFactors=Fを指定しない場合、⽂字列がファクター型で読み

込まれます

# 現在のディレクトリを確認getwd()# デスクトップにディレクトリを移動setwd("/Users/st20909/Desktop")# csvデータの読み込みdata <- read.csv("coupon_detail_train.csv", stringsAsFactors=F )

Page 20: 20170312 r言語環境構築&dplyr ハンズオン

データ確認 GUIで楽々• 右上の変数⼀覧から変数の定義や、変数名をクリックでデータ

の中⾝を確認することができます

Page 21: 20170312 r言語環境構築&dplyr ハンズオン

データ確認 コマンドの場合• nrowで⾏数、head( tail )で中⾝、• なお変数名を⼊⼒してそのままエンターを押すと全件表⽰しようと

しますが、数が多すぎてRStudioが固まる場合は「STOP」ボタンを押下します

# データの⾏数確認nrow(data)# カラム名確認names(data)# 先頭3件のデータ表⽰head(data, 3)

# 変数の型を調べるclass(data)>[1] "data.frame”# 変数の詳細を調べるstr(data)

Page 22: 20170312 r言語環境構築&dplyr ハンズオン

いくつか集計• hist関数でヒストグラムを、tableで要素ごとのグループ化集計

が可能です

# ヒストグラムhist(data$ITEM_COUNT)# テーブル集計table(data$ITEM_COUNT)table(data$SMALL_AREA_NAME)

Page 23: 20170312 r言語環境構築&dplyr ハンズオン

dplyrとは• C++で書かれた⾼速なデータフレームの集計処理ができるライ

ブラリ• %>% という演算⼦でパイプライン処理での記述ができるのが

特徴

Page 24: 20170312 r言語環境構築&dplyr ハンズオン

dplyrパッケージの準備• install.packages関数でパッケージをインストールできます• なお参考まで、CRANになく個⼈のgithubに上がっているパッケージ

は、devtoolsパッケージに含まれるinstall_github関数を使うことでインストールが可能です

# dplyrインストールinstall.packages('dplyr')# パッケージのロードlibrary('dplyr')# ヘルプの表⽰。 ? dplyrでも可能help(dplyr)

Page 25: 20170312 r言語環境構築&dplyr ハンズオン

dplyr 操作⼀覧

http://qiita.com/matsuou1/items/e995da273e3108e2338e より引⽤

• dplyrとR本体とで書き⽅が異なるため、どちらか⽚⽅から覚えたほうが効率的• 今回はグループ化処理や結合処理(JOIN)が可能なdplyrメインで説明します

Page 26: 20170312 r言語環境構築&dplyr ハンズオン

dplyr ⾏の絞り込み

# 福岡のデータのみ抽出data %>%

filter(SMALL_AREA_NAME == '福岡') %>% head()

Page 27: 20170312 r言語環境構築&dplyr ハンズオン

dplyr 都道府県別にグループ化集計&ソート# グループ化集計data %>%

group_by(SMALL_AREA_NAME) %>%summarise(num=n()) %>% # 数を集計arrange(desc(num)) %>% # numで後順にソートhead()

Page 28: 20170312 r言語環境構築&dplyr ハンズオン

dplyr 列の追加# グループ化集計 & カラム追加(1万件より多いエリア) data2 <- data %>% group_by(SMALL_AREA_NAME) %>%

summarise(num=n()) %>% # 数を集計mutate(is_over_10000 = ifelse(num > 10000 , 1 , 0)) %>% arrange(desc(num)) %>% # numで後順にソート

head() data2

Page 29: 20170312 r言語環境構築&dplyr ハンズオン

JOINの前にユーザーリスト⽤意# ユーザーリスト読み込みusers <- read.csv("user_list.csv", stringsAsFactors=F)head(users)

Page 30: 20170312 r言語環境構築&dplyr ハンズオン

user_id_hashでLEFT JOIN

# LEFT JOINjoined <- data %>%

left_join(users, by='USER_ID_hash')head(joined)

Page 31: 20170312 r言語環境構築&dplyr ハンズオン

user_id_hashでLEFT JOIN & 集計

# 性別で集計joined2 <- joined %>%

select(SMALL_AREA_NAME, SEX_ID) %>%table()

joined2

Page 32: 20170312 r言語環境構築&dplyr ハンズオン

結果をファイル出⼒# ファイル書き出しwrite.csv(joined2, "output_data.csv", quote=F, fileEncoding="UTF-8")# Excelで開く際は⽂字化け対策としてSJISで書き出すwrite.csv(joined2, "output_data_sjis.csv", quote=F, fileEncoding="SJIS")

Page 33: 20170312 r言語環境構築&dplyr ハンズオン

再掲:結果をHTML出⼒• 「Knit」ボタンを押下するとRマークダウンを実⾏してHTML

に変換してくれる• 「install.packages」が記載されている部分はコメントアウトし

て実⾏すること(すでに⼊っているとエラーになる)

Page 34: 20170312 r言語環境構築&dplyr ハンズオン

まとめ• RとRStudioのインストール• 再現性確保のためのRマークダウン• ファイルの⼊出⼒• dplyrを使ったデータフレーム操作(基礎)

dplyrを使った基礎的な集計と、処理再現のための環境構築が完了

Page 35: 20170312 r言語環境構築&dplyr ハンズオン

今後• ⽬的に合わせてRを使ってみて下さい• データをさらに整形したい => reshape2• 意思決定に分析⼿法を試したい => rpart, 各種書籍、発表資料• 予測モデルを⾊々を試したい => caret• もっと可視化したい => ggplot2やleaflet• Webサーバーでダッシュボード化したい => Shiny, flexdashboard• 他⾔語と連携したい => CやExcel、SQLなど連携できます・・などなど

⽤途別にいろいろなパッケージがあるので是⾮探して使ってみて下さい。

Page 36: 20170312 r言語環境構築&dplyr ハンズオン

ご静聴ありがとうございました!