35
<#> 続続続続続 TOKYO.R #39 続続 続続

Tokyo r39 beginner

Embed Size (px)

Citation preview

Page 1: Tokyo r39 beginner

<#>

続はじめての

TOKYO.R #39

簑田 高志

Page 2: Tokyo r39 beginner

目次

1.自己紹介2.前回までのあらすじ3.続・はじめての R4. まとめ

※ スクリーンショットや機能等は Mac 版となります。

Page 3: Tokyo r39 beginner

• 名前 : 簑田 高志• Twitter :aad34210• ブログ :http://

pracmper.blogspot.com/• 出身地 : 熊本県• 出身学部 : 法学部• 仕事 : インターネット広告のビジネスア

ナリスト

自己紹介

Page 4: Tokyo r39 beginner

前回までのあらすじ• はじめて R をさわる方、 R を触り初めて数カ月の方に

向けて、 R の基礎的な部分をお話ししました。

• どんな内容だったかというと…1. インストール2. 起動と終了3. demo() の利用4. データへのアクセス方法5. データ集計方法6. 関数7. 自作関数( Function )8. パッケージ

• 前回の資料は Slideshare に公開しています。 http://www.slideshare.net/aad34210/tokyo-r38

Page 5: Tokyo r39 beginner

今回の話• 今回の話は前回の続き。• R の基礎編です。

i. 条件分岐ii.ループiii.グラフ作成iv.統計解析

• 効率的に分析するために必要な「道具」を紹介します。

• 資料中は、コードと例文を以下のようにハイライトしています。

• 基本コード: Sample• 例文 :  Sample

Page 6: Tokyo r39 beginner

<#>

条件分岐

Page 7: Tokyo r39 beginner

条件分岐• ある条件で場合分けをしたい場合に利用する。

値: A

条件

値: Z 値: K

A >= 0 → KA < 0 → Z

Page 8: Tokyo r39 beginner

条件分岐• 条件分岐とは?

• ある条件で場合分けをしたい場合は If 文、 Else 文を使う。• if ( 条件文 ) {処理内容}

• 例えば…• 売上金額が 10 万以上であれば、 A-Class 、それ以外は Other 。

x <- 100000if (x >= 200000)

{print ("A-Class")} else {print("Other")}

Page 9: Tokyo r39 beginner

条件分岐• IFELSE 文

• IFELSE 文で一つのコードで IF 文ができる。• ifelse( 条件,データが真の場合,偽の場合 )

• 例えば…• 売上金額が 10 万以上であれば、 A クラス、それ以外は Other 。

x <- 100000ifelse(x >= 100000 , "A-Class" ,  "B-Class")

Page 10: Tokyo r39 beginner

条件分岐• SWITCH 文

• 複数の条件で分岐させたい場合• switch( データ,ケース 1 , ケース 2 , 一致する場合がないケース )

• 例えば…• Tokyo から売上が上がっている場合は、 Japan を。それ以外は Other

city <- "Tokyo”switch(city ,"Tokyo" = print("Japan") , print("Other"))

Page 11: Tokyo r39 beginner

<#>

ループ

Page 12: Tokyo r39 beginner

ループ• For 文は他のプログラミング言語と同じように、「繰り返し」処理ができ

る。• 幾つもの同じような処理をコピペして処理をさせなくても、ループ処理を

利用することにより、大幅に作業時間を減らすことができる。

処理 A

処理 A 処理 A

処理 A 処理 A

4 回同じ処理を繰り返す

繰り返し文を利用して処理を 4 回行う。

Page 13: Tokyo r39 beginner

FOR 文• For 文

• ある処理を繰り返し行いたい場合に利用する。• for ( ループ変数 in リスト ) {処理}

• 例えば…• 1〜 5 までを合計する。

• ベクトルを表示させる。

x <- 0for (i in 1:5) {x <- x +1}x

x <- c(10000 , 20000 , 30000)for (i in 1:length(x)){print(x[i])}

Page 14: Tokyo r39 beginner

WHILE 文• While 文

• ある条件が成り立っている場合にずっとループ処理をし続ける。• 注意:ずっと条件が成り立っている場合は、無限ループしてしまうの

で、気をつけること。• while ( 条件式 ) {処理}

• 例えば…• 5 以下を足し続ける。x <- 0 while (x <= 4) {x <- x +1}x

Page 15: Tokyo r39 beginner

例題

• IF 文(条件分岐)、 For 文(繰り返し)、 Function (自作関数(前回説明))を組み合わせると、処理がまとまり、関数化することができる。

• → 処理の自動化が可能。

for (i in 1:100) {print(ifelse( i%%2 == 0 , "Fiz" , ”Buz" ))}

• 問題• 1 〜 100 までの数字の中で、 2 の倍数であれば、“ Fiz” 、それ以外は

数を表示するプログラムを作成しなさい。

• 回答• For 文で 1 : 100 までをベクトル生成• 2 の倍数:“ %%” で余りを計算• 2 の倍数の余りを IFELSE 文で判定。• Print 文で表示

Page 16: Tokyo r39 beginner

<#>

グラフ作成

Page 17: Tokyo r39 beginner

グラフ作成• データを解析する前に、変数がどのような分布になっているかをビジュア

ルで確認して、データの分布等を確かめる。• 結果をレポートとしてまとめ、レビュアー(報告者)への理解を深めるた

めにグラフを作成する。• グラフ作成は「奥が深い」ため、今回は代表的なグラフのみ紹介して、残

りのパッケージ等は Appendixとして紹介します。

1,2,3,4,5,6,7,8,9…

データ

Page 18: Tokyo r39 beginner

散布図• データがどのような散らばり具合をしているのかを調査したい場合、散

布図を描きます。• plot(x , y)

# ベクトルの表示data <- c(1:100)plot(data)#iris の Sepal.length と Sepal.Width の散布図plot(iris[,1] , iris[,2])

# ベクトルの表示 #iris の Sepal.length とSepal.Width の散布図

Page 19: Tokyo r39 beginner

散布図• 変数が多くある場合、変数の 1 つずつの組み合わせだと手間がかかるの

で、一気に組み合わせてみてみたい場合。• plot(dataframe)• pars(dataframe)

# 複数変数の散布図組合せ(対散布図)plot(iris[-5])# 複数変数の対散布図(種類による色分け)pairs(iris[1:4], pch = 21,bg = c("red" , "green3" , "blue")[unclass(iris$Species)])

Page 20: Tokyo r39 beginner

散布図

# 複数変数の散布図組合せ(対散布図) # 複数変数の対散布図(種類による色分け)

Page 21: Tokyo r39 beginner

線グラフ(折れ線グラフ)• データがどのように変化しているのかを分かるようにする。• 実は折れ線グラフは散布図にラインを引いただけなので比較的簡単に作

成できます。 (type = “l” を指定)• plot( データ , type = “l”)

#aho_data を使って折れ線グラフplot(aho_data[,1] , type = "l”)

Page 22: Tokyo r39 beginner

棒グラフ( 1 )• データがどの因子でどのぐらいボリュームになっているかを一目で分かる。

• barplot( データ )

#単純な棒グラフbarplot(1:10)#色つき棒グラフbarplot(matrix(1:20, 5), col=rainbow(5))

#単純な棒グラフ #色つき棒グラフ

Page 23: Tokyo r39 beginner

棒グラフ(2)• データがどの因子でどのぐらいボリュームになっているかを一目で分かる。

• barplot( データ )

#種類ごとでの棒グラフbarplot(table(iris[,5]))#色を付けたい場合barplot(table(iris[,5]),col = c("red" , "green" ,"yellow"))

#単純な棒グラフ #色つき棒グラフ

Page 24: Tokyo r39 beginner

棒グラフ( 3 )• 先ほどの“ Aho” 、“アホ”をそれぞれカウントして棒グラフを作ってみま

しょう。# データフレームの作成aho_data <- data.frame(1:100)

# グラフ用データの作成aho_data$hantei <- ifelse(aho_data[,1]%%3 == 0,"aho",ifelse(aho_data[,1]%%5 == 0 ," アホ ","天才 "))# Barplot の作成barplot(table(aho_data[,2]) , col = c("green" , "blue" , "red"))

Page 25: Tokyo r39 beginner

参考( 1 ): ggplot2

• これまで紹介したのは R のデフォルトで利用できるパッケージ。• 自分で色々と細かく設定できるのがメリットですが、簡単に綺麗なグラ

フを書きたい場合は、 ggplot2 というパッケージがおすすめ。

• 過去に発表しています。• http://www.slideshare.net/aad34210/ggplot2-110129-6739813

Page 26: Tokyo r39 beginner

参考( 2 ): demo()

• demo() という関数を利用することで、パッケージの参照デモをみることができます。#demo() の graphics を見てみるdemo(graphics)

Page 27: Tokyo r39 beginner

参考( 3 ): rCharts 、 googlevis

• ここ 1年で「静的」なチャートだけでなく「動的」なチャートを作れるように。

• rCharts :http://rcharts.io/

Page 28: Tokyo r39 beginner

参考( 3 ): rCharts 、 googlevis

• ここ 1年で「静的」なチャートだけでなく「動的」なチャートを作れるように。

• googlevis :http://decastillo.github.io/googleVis_Tutorial/#1

Page 29: Tokyo r39 beginner

参考( 3 ): rCharts 、 googlevis

• googlevis の Package 作成者が日本に来て話をしてくれました!• http://togetter.com/li/656355

Page 30: Tokyo r39 beginner

<#>

統計解析

Page 31: Tokyo r39 beginner

統計解析• グラフ作成と同様に奥のふかーい分野。• 今回はデータ全体がどのような分布になっているかを簡単に調査するための関数を紹介。

#最大値max(aho_data[,1]) #最小値min(aho_data[,1])# レンジ(最大値、最小値)range(aho_data[,1])#平均mean(aho_data[,1])# 中央値median(aho_data[,1])#四分位点quantile(aho_data[,1] )#サマリ(平均値、中央値、四分位点)summary(aho_data[,1])

各種統計パッケージの話は、過去や今後の TokyoR で見てみてください!

Page 32: Tokyo r39 beginner

<#>

まとめ

Page 33: Tokyo r39 beginner

まとめ• IF文

• 条件分岐をさせたい時に利用する。 ifelse も使えるよ• For文

• 繰り返し処理を行いたい場合に利用する。• 条件が正の場合に繰り返し処理をする While もある。

• FizzBuzz• IF 文と For 文を使って、 FizzBuzz 問題を解く。

• グラフ作成• 奥の深い世界…• demo(graphics) で試してみよう。• plot,barplot• ggplot2 など様々なパッケージがある。• 動的なチャートも作成できる。

• 統計解析• 簡単な関数で、統計量を計算することができる。• max,min,range,quantile,summary

Page 34: Tokyo r39 beginner

参考文献・資料R-Tipe : http://cse.naro.affrc.go.jp/takezawa/r-tips/r.htmlThe R tips : http://ow.ly/9yFPs ggplot2 :http://had.co.nz/ggplot/rcharts :http://rcharts.io/

http://www.slideshare.net/teramonagi/tokyo-r31-20130601googlevis :http://lamages.blogspot.co.uk/2013/07/googlevis-tutorial-at-user2013.html

Page 35: Tokyo r39 beginner

ご清聴ありがとうございましたm(___)m