Your SlideShare is downloading. ×
  • Like
Tokyo r39 beginner
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Tokyo r39 beginner

  • 1,255 views
Published

 

Published in Data & Analytics
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,255
On SlideShare
0
From Embeds
0
Number of Embeds
7

Actions

Shares
Downloads
12
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. <#> 続 はじめての TOKYO.R #39 簑田 高志
  • 2. 目次 1. 自己紹介 2. 前回までのあらすじ 3. 続・はじめてのR 4. まとめ ※ スクリーンショットや機能等はMac版となります。
  • 3. • 名前 :簑田 高志 • Twitter :aad34210 • ブログ :http://pracmper.blogspot.com/ • 出身地 :熊本県 • 出身学部 :法学部 • 仕事 :インターネット広告のビジネスアナリスト 自己紹介
  • 4. 前回までのあらすじ • はじめてRをさわる方、Rを触り初めて数カ月の方に向けて、 Rの基礎的な部分をお話ししました。 • どんな内容だったかというと… 1. インストール 2. 起動と終了 3. demo()の利用 4. データへのアクセス方法 5. データ集計方法 6. 関数 7. 自作関数(Function) 8. パッケージ • 前回の資料はSlideshareに公開しています。  http://www.slideshare.net/aad34210/tokyo-r38
  • 5. 今回の話 • 今回の話は前回の続き。 • Rの基礎編です。 i. 条件分岐 ii. ループ iii.グラフ作成 iv.統計解析 • 効率的に分析するために必要な「道具」を紹介します。 • 資料中は、コードと例文を以下のようにハイライトしてい ます。 • 基本コード:Sample • 例文: Sample
  • 6. <#> 条件分岐
  • 7. 条件分岐 • ある条件で場合分けをしたい場合に利用する。 値:A 条件 値:Z 値:K A >= 0 → K A < 0 → Z
  • 8. 条件分岐 • 条件分岐とは? • ある条件で場合分けをしたい場合はIf文、Else文を使う。 • if (条件文){処理内容} • 例えば… • 売上金額が10万以上であれば、A-Class、それ以外はOther。 x <- 100000 if (x >= 200000) {print ("A-Class")} else {print("Other")}
  • 9. 条件分岐 • IFELSE文 • IFELSE文で一つのコードでIF文ができる。 • ifelse(条件,データが真の場合,偽の場合) • 例えば… • 売上金額が10万以上であれば、Aクラス、それ以外はOther。 x <- 100000 ifelse(x >= 100000 , "A-Class" , "B-Class")
  • 10. 条件分岐 • SWITCH文 • 複数の条件で分岐させたい場合 • switch(データ,ケース1 , ケース2 , 一致する場合がないケース) • 例えば… • Tokyoから売上が上がっている場合は、Japanを。それ以外はOther city <- "Tokyo” switch(city ,"Tokyo" = print("Japan") , print("Other"))
  • 11. <#> ループ
  • 12. ループ • For文は他のプログラミング言語と同じように、「繰り返し」処理ができる。 • 幾つもの同じような処理をコピペして処理をさせなくても、ループ処理を利用す ることにより、大幅に作業時間を減らすことができる。 処理A 処理A 処理A 処理A 処理A 4回同じ処理を繰り返す 繰り返し文を利用し て処理を4回行う。
  • 13. 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])}
  • 14. WHILE文 • While文 • ある条件が成り立っている場合にずっとループ処理をし続ける。 • 注意:ずっと条件が成り立っている場合は、無限ループしてしまうので、気 をつけること。 • while (条件式) {処理} • 例えば… • 5以下を足し続ける。 x <- 0 while (x <= 4) {x <- x +1} x
  • 15. 例題 • 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文で表示
  • 16. <#> グラフ作成
  • 17. グラフ作成 • データを解析する前に、変数がどのような分布になっているかをビジュアルで確 認して、データの分布等を確かめる。 • 結果をレポートとしてまとめ、レビュアー(報告者)への理解を深めるためにグラ フを作成する。 • グラフ作成は「奥が深い」ため、今回は代表的なグラフのみ紹介して、残りの パッケージ等は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
  • 18. 散布図 • データがどのような散らばり具合をしているのかを調査したい場合、散布図を 描きます。 • 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の散布図
  • 19. 散布図 • 変数が多くある場合、変数の1つずつの組み合わせだと手間がかかるので、一 気に組み合わせてみてみたい場合。 • plot(dataframe) • pars(dataframe) #複数変数の散布図組合せ(対散布図) plot(iris[-5]) #複数変数の対散布図(種類による色分け) pairs(iris[1:4], pch = 21,bg = c("red" , "green3" , "blue")[unclass(iris$Species)])
  • 20. 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 #複数変数の散布図組合せ(対散布図) #複数変数の対散布図(種類による色分け)
  • 21. 線グラフ(折れ線グラフ) • データがどのように変化しているのかを分かるようにする。 • 実は折れ線グラフは散布図にラインを引いただけなので比較的簡単に作成で きます。(type = “l”を指定) • plot(データ , type = “l”) #aho_dataを使って折れ線グラフ plot(aho_data[,1] , type = "l”) 0 20 40 60 80 100 020406080100 Index aho_data[,1]
  • 22. 棒グラフ(1) • データがどの因子でどのぐらいボリュームになっているかを一目で分かる。 • barplot(データ) #単純な棒グラフ barplot(1:10) #色つき棒グラフ barplot(matrix(1:20, 5), col=rainbow(5)) 0246810 #単純な棒グラフ 020406080 #色つき棒グラフ
  • 23. 棒グラフ(2) • データがどの因子でどのぐらいボリュームになっているかを一目で分かる。 • barplot(データ) #種類ごとでの棒グラフ barplot(table(iris[,5])) #色を付けたい場合 barplot(table(iris[,5]),col = c("red" , "green" ,"yellow")) #単純な棒グラフ #色つき棒グラフ setosa versicolor virginica 01020304050 setosa versicolor virginica 01020304050
  • 24. aho 01020304050 棒グラフ(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"))
  • 25. 参考(1):ggplot2 • これまで紹介したのはRのデフォルトで利用できるパッケージ。 • 自分で色々と細かく設定できるのがメリットですが、簡単に綺麗なグラフを書き たい場合は、ggplot2というパッケージがおすすめ。 • 過去に発表しています。 • http://www.slideshare.net/aad34210/ggplot2-110129-6739813
  • 26. 参考(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
  • 27. 参考(3):rCharts、googlevis • ここ1年で「静的」なチャートだけでなく「動的」なチャートを作れるように。 • rCharts :http://rcharts.io/
  • 28. 参考(3):rCharts、googlevis • ここ1年で「静的」なチャートだけでなく「動的」なチャートを作れるように。 • googlevis :http://decastillo.github.io/googleVis_Tutorial/#1
  • 29. 参考(3):rCharts、googlevis • googlevisのPackage作成者が日本に来て話をしてくれました! • http://togetter.com/li/656355
  • 30. <#> 統計解析
  • 31. 統計解析 • グラフ作成と同様に奥のふかーい分野。 • 今回はデータ全体がどのような分布になっているかを簡単に調査するための関数を紹介。 #最大値 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で見てみてください!
  • 32. <#> まとめ
  • 33. まとめ • IF文 • 条件分岐をさせたい時に利用する。ifelse も使えるよ • For文 • 繰り返し処理を行いたい場合に利用する。 • 条件が正の場合に繰り返し処理をするWhileもある。 • FizzBuzz • IF文とFor文を使って、FizzBuzz問題を解く。 • グラフ作成 • 奥の深い世界… • demo(graphics)で試してみよう。 • plot,barplot • ggplot2など様々なパッケージがある。 • 動的なチャートも作成できる。 • 統計解析 • 簡単な関数で、統計量を計算することができる。 • max,min,range,quantile,summary
  • 34. 参考文献・資料 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
  • 35. ご清聴ありがとうございました m(___)m