<#>
続
はじめての
TOKYO.R #45
簑田 高志
目次
1. 自己紹介
2. 前回までのあらすじ
3. 続・はじめてのR
4. まとめ
※ スクリーンショットや機能等はMac版となります。
• 名前 :簑田 高志
• Twitter :aad34210
• ブログ :http://pracmper.blogspot.com/
• 仕事 :Eコマースサービス アナリスト
自己紹介
前回までのあらすじ
• はじめてRをさわる方、Rを触り初めて数カ月の方に向けて、
Rの基礎的な部分をお話ししました。
• どんな内容だったかというと…
1. インストール
2. 起動と終了
3. demo()の利用
4. データへのアクセス方法
5. データ集計方法
6. 関数
7. 自作関数(Function)
8. パッケージ
• 前回の資料はSlideshareに公開しています。
 http://www.slideshare.net/aad34210/tokyo-r38
今回の話
• 今回の話は前回の続き。
• Rの基礎編です。
i. 条件分岐
ii. ループ
iii.グラフ作成
iv.統計解析
• 効率的に分析するために必要な「道具」を紹介します。
• 資料中は、コードと例文を以下のようにハイライトしてい
ます。
• 基本コード:Sample
• 例文: Sample
<#>
条件分岐
条件分岐
• ある条件で場合分けをしたい場合に利用する。
値:A
条件
値:Z 値:K
A >= 0 → K
A < 0 → Z
条件分岐
• 条件分岐とは?
• ある条件で場合分けをしたい場合はIf文、Else文を使う。
• if (条件文){処理内容}
• 例えば…
• 売上金額が10万以上であれば、A-Class、それ以外はOther。
x <- 100000
if (x >= 200000)
{print ("A-Class")} else {print("Other")}
条件分岐
• IFELSE文
• IFELSE文で一つのコードでIF文ができる。
• ifelse(条件,データが真の場合,偽の場合)
• 例えば…
• 売上金額が10万以上であれば、Aクラス、それ以外はOther。
x <- 100000
ifelse(x >= 100000 , "A-Class" , "B-Class")
条件分岐
• SWITCH文
• 複数の条件で分岐させたい場合
• switch(データ,ケース1 , ケース2 , 一致する場合がないケース)
• 例えば…
• Tokyoから売上が上がっている場合は、Japanを。それ以外はOther
city <- "Tokyo”
switch(city ,"Tokyo" = print("Japan") , print("Other"))
<#>
ループ
ループ
• For文は他のプログラミング言語と同じように、「繰り返し」処理ができる。
• 幾つもの同じような処理をコピペして処理をさせなくても、ループ処理を利用す
ることにより、大幅に作業時間を減らすことができる。
処理A
処理A 処理A
処理A 処理A
4回同じ処理を繰り返す
繰り返し文を利用し
て処理を4回行う。
FOR文
• For文
• ある処理を繰り返し行いたい場合に利用する。
• for (ループ変数 in リスト) {処理}
• 例えば…
• 1〜5までを合計する。
• ベクトルを表示させる。
x <- 0
for (i in 1:5) {x <- x +1}
x
x <- c(10000 , 20000 , 30000)
for (i in 1:length(x)){print(x[i])}
WHILE文
• While文
• ある条件が成り立っている場合にずっとループ処理をし続ける。
• 注意:ずっと条件が成り立っている場合は、無限ループしてしまうので、気
をつけること。
• while (条件式) {処理}
• 例えば…
• 5以下を足し続ける。
x <- 0
while (x <= 4) {x <- x +1}
x
<#>
グラフ作成
グラフ作成
• データを解析する前に、変数がどのような分布になっているかをビジュアルで確
認して、データの分布等を確かめる。
• 結果をレポートとしてまとめ、レビュアー(報告者)への理解を深めるためにグラ
フを作成する。
• グラフ作成は「奥が深い」ため、今回は代表的なグラフのみ紹介して、残りの
パッケージ等はAppendixとして紹介します。
1,2,3,
4,5,6,
7,8,9
…
データ
Sepal.Length
2.0 2.5 3.0 3.5 4.0 0.5 1.0 1.5 2.0 2.5
4.55.56.57.5
2.02.53.03.54.0
Sepal.Width
Petal.Length
1234567
4.5 5.5 6.5 7.5
0.51.01.52.02.5
1 2 3 4 5 6 7
Petal.Width
Edgar Anderson's Iris Data
-35-30-25-20-15-10
165 170 175 180 185
165 170 175 180 185 165 170 175 180 185
-35-30-25-20-15-10
long
lat
100 200 300 400 500 600
Given : depth
1 2 3 4 5 6 7 8 9 10
0246
Notched Boxplots
Group
散布図
• データがどのような散らばり具合をしているのかを調査したい場合、散布図を
描きます。
• plot(x , y)
#ベクトルの表示
data <- c(1:100)
plot(data)
#irisのSepal.lengthとSepal.Widthの散布図
plot(iris[,1] , iris[,2])
0 20 40 60 80 100
020406080100
Index
data
#ベクトルの表示
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0
2.02.53.03.54.0
iris[, 1]
iris[,2]
#irisのSepal.lengthと
Sepal.Widthの散布図
散布図
• 変数が多くある場合、変数の1つずつの組み合わせだと手間がかかるので、一
気に組み合わせてみてみたい場合。
• plot(dataframe)
• pars(dataframe)
#複数変数の散布図組合せ(対散布図)
plot(iris[-5])
#複数変数の対散布図(種類による色分け)
pairs(iris[1:4], pch = 21,bg = c("red" , "green3" ,
"blue")[unclass(iris$Species)])
Sepal.Length
2.0 2.5 3.0 3.5 4.0 0.5 1.0 1.5 2.0 2.5
4.55.56.57.5
2.02.53.03.54.0
Sepal.Width
Petal.Length
1234567
4.5 5.5 6.5 7.5
0.51.01.52.02.5
1 2 3 4 5 6 7
Petal.Width
散布図
Sepal.Length
2.0 2.5 3.0 3.5 4.0 0.5 1.0 1.5 2.0 2.5
4.55.56.57.5
2.02.53.03.54.0
Sepal.Width
Petal.Length
1234567
4.5 5.5 6.5 7.5
0.51.01.52.02.5
1 2 3 4 5 6 7
Petal.Width
#複数変数の散布図組合せ(対散布図) #複数変数の対散布図(種類による色分け)
線グラフ(折れ線グラフ)
• データがどのように変化しているのかを分かるようにする。
• 実は折れ線グラフは散布図にラインを引いただけなので比較的簡単に作成で
きます。(type = “l”を指定)
• plot(データ , type = “l”)
#aho_dataを使って折れ線グラフ
plot(aho_data[,1] , type = "l”)
0 20 40 60 80 100
020406080100
Index
aho_data[,1]
棒グラフ(1)
• データがどの因子でどのぐらいボリュームになっているかを一目で分かる。
• barplot(データ)
#単純な棒グラフ
barplot(1:10)
#色つき棒グラフ
barplot(matrix(1:20, 5), col=rainbow(5))
0246810
#単純な棒グラフ
020406080
#色つき棒グラフ
棒グラフ(2)
• データがどの因子でどのぐらいボリュームになっているかを一目で分かる。
• barplot(データ)
#種類ごとでの棒グラフ
barplot(table(iris[,5]))
#色を付けたい場合
barplot(table(iris[,5]),col = c("red" ,
"green" ,"yellow"))
#単純な棒グラフ #色つき棒グラフ
setosa versicolor virginica
01020304050
setosa versicolor virginica
01020304050
参考(1):ggplot2
• これまで紹介したのはRのデフォルトで利用できるパッケージ。
• 自分で色々と細かく設定できるのがメリットですが、簡単に綺麗なグラフを書き
たい場合は、ggplot2というパッケージがおすすめ。
• 過去に発表しています。
• http://www.slideshare.net/aad34210/ggplot2-110129-6739813
参考(2):demo()
• demo()という関数を利用することで、パッケージの参照デモをみることができま
す。
#demo()のgraphicsを見てみる
demo(graphics)
Sepal.Length
2.0 2.5 3.0 3.5 4.0 0.5 1.0 1.5 2.0 2.5
4.55.56.57.5
2.02.53.03.54.0
Sepal.Width
Petal.Length
1234567
4.5 5.5 6.5 7.5
0.51.01.52.02.5
1 2 3 4 5 6 7
Petal.Width
Edgar Anderson's Iris Data
-35-30-25-20-15-10
165 170 175 180 185
165 170 175 180 185 165 170 175 180 185
-35-30-25-20-15-10
long
lat
100 200 300 400 500 600
Given : depth
1 2 3 4 5 6 7 8 9 10
0246
Notched Boxplots
Group
参考(3):rCharts、googlevis
• ここ1年で「静的」なチャートだけでなく「動的」なチャートを作れるように。
• rCharts :http://rcharts.io/
参考(3):rCharts、googlevis
• ここ1年で「静的」なチャートだけでなく「動的」なチャートを作れるように。
• googlevis :http://decastillo.github.io/googleVis_Tutorial/#1
参考(3):rCharts、googlevis
• googlevisのPackage作成者が日本に来て話をしてくれました!
• http://togetter.com/li/656355
<#>
統計解析
統計解析
• グラフ作成と同様に奥のふかーい分野。
• 今回はデータ全体がどのような分布になっているかを簡単に調査するための関数を紹介。
#最大値
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で見てみてください!
<#>
まとめ
まとめ
• IF文
• 条件分岐をさせたい時に利用する。ifelse も使えるよ
• For文
• 繰り返し処理を行いたい場合に利用する。
• 条件が正の場合に繰り返し処理をするWhileもある。
• FizzBuzz
• IF文とFor文を使って、FizzBuzz問題を解く。
• グラフ作成
• 奥の深い世界…
• demo(graphics)で試してみよう。
• plot,barplot
• ggplot2など様々なパッケージがある。
• 動的なチャートも作成できる。
• 統計解析
• 簡単な関数で、統計量を計算することができる。
• max,min,range,quantile,summary
参考文献・資料
R-Tipe :http://cse.naro.affrc.go.jp/takezawa/r-tips/r.html
The R tips :http://ow.ly/9yFPs
ggplot2 :http://had.co.nz/ggplot/
rcharts :http://rcharts.io/
http://www.slideshare.net/teramonagi/tokyo-r31-20130601
googlevis :http://lamages.blogspot.co.uk/2013/07/googlevis-tutorial-at-user2013.html
ご清聴ありがとうございました
m(___)m

Tokyo r45 beginner_2