Tokyo r21 2
Upcoming SlideShare
Loading in...5
×
 

Tokyo r21 2

on

  • 3,788 views

TokyoR 21回資料

TokyoR 21回資料

Statistics

Views

Total Views
3,788
Views on SlideShare
2,194
Embed Views
1,594

Actions

Likes
4
Downloads
49
Comments
0

5 Embeds 1,594

http://d.hatena.ne.jp 1541
https://twitter.com 44
http://webcache.googleusercontent.com 4
http://us-w1.rockmelt.com 3
http://tweetedtimes.com 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Tokyo r21 2 Tokyo r21 2 Presentation Transcript

  • 続 はじめてのTOKYO.R #21簑田 高志
  • 目次1. 自己紹介2. 前回までのあらすじ3. 続・はじめてのR4. まとめ ※ スクリーンショットや機能等はMac版となります。
  • 自己紹介• 名前 :簑田 高志• Twitter :aad34210• ブログ :http://pracmper.blogspot.com/• 出身地 :熊本県• 出身学部 :法学部• 仕事 :インターネット広告のアナリスト View slide
  • 前回までのあらすじ• はじめてRをさわる方、Rを触り初めて数カ月の方に向 けて、Rの基礎的な部分をお話ししました。• どんな内容だったかというと… 1. インストール 2. 起動と終了 3. demo()の利用 4. データへのアクセス方法 5. データ集計方法 6. 関数 7. 自作関数(Function) 8. パッケージ• 前回の資料はSlideshareに公開しています。  http://www.slideshare.net/aad34210/tokyo-r18 View slide
  • 今回の話 • 今回の話は前回の続き。 • Rの基礎編です。 i. 条件分岐 ii. ループ iii.グラフ作成 iv.統計解析 • 資料中は、コードと例文を以下のようにハイライト しています。 • 基本コード:Sample • 例文: Sample
  • そんな話を知ってるよ!という方は…• 私は初心者ではないので、そんな話 は聞かなくても大丈夫!という方。• そういう方は… この本をAmazonで注文し 今日のTokyoRに参加している人が! ておいてください。 持ってくるとサインもらえるかも?!
  • 条件分岐
  • 条件分岐• ある条件で場合分けをしたい場合に利用する。 値:A 条件 A >= 0 → K A< 0 → Z 値:Z 値:K
  • 条件分岐• 条件分岐とは? • ある条件で場合分けをしたい場合はIf文、Else文を使う。 • if (条件文){処理内容}• 例えば… • 売上金額が10万以上であれば、A-Class、それ以外はOther。 x <- 100000 if (x >= 100000) {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 4回同じ処理を繰り返す 処理A 処理A 繰り返し文を利用 処理A して処理を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
  • 例題(1)• IF文(条件分岐)、For文(繰り返し)、Function(自作関数(前回説 明))を組み合わせると、処理がまとまり、関数化することができる。 • → 処理の自動化が可能。• 問題 • 1〜100までの数字の中で、2の倍数であれば、“Fiz”、それ以外は数を 表示するプログラムを作成しなさい。• 回答 • For文で1:100までをベクトル生成 • 2の倍数:“%%”で余りを計算 • 2の倍数の余りをIFELSE文で判定。 • Print文で表示 for (i in 1:100) {print(ifelse( i%%2 == 0 , "Fizz" , i ))}
  • 例題(2)• 前のページの問題は意外とすぐにとける• では、 世界のナベアツでやってみよう。• 問題 • 1〜100までの数字の中で、 • 3の倍数 :“Aho” と表示 • 5 の倍数 :“アホ” と表示• 回答 • For文で1:100までをベクトル生成 • 3の倍数:“%%”で余りを計算し割り切れる数を判定 • 5の倍数:“%%”で余りを計算し割り切れる数を判定 • それぞれIF文で“Aho”か“アホ”か判定 • Print文で表示
  • 例題(3) for( i in 1:100) { if (i%%3 == 0 ) {print("Aho")} else if (i%%5 == 0) {print("アホ")} else {print(i)} } 関数化(Function)にしてみよう。 利用する変数 ・ベクトル数 :n ・Ahoと表示する倍数 :baisuu1 ・アホと表示する倍数 :baisuu2 nabeatsu <- function(n , baisuu1 , baisuu2) { for( i in 1:n) { if (i%%baisuu1 == 0 ) {print("Aho")} else if (i%%baisuu2 == 0) {print("アホ")} else {print(i)} } }
  • グラフ作成
  • グラフ作成• データを解析する前に、変数がどのような分布になっているかをビジュ アルで確認して、データの分布等を確かめる。• 結果をレポートとしてまとめ、レビュアー(報告者)への理解を深める ためにグラフを作成する。• グラフ作成は「奥が深い」ため、今回は代表的なグラフのみ紹介して、 残りのパッケージ等はAppendixとして紹介します。 Edgar Andersons Iris Data 2.0 2.5 3.0 3.5 4.0 0.5 1.0 1.5 2.0 2.5 7.5 6.5 Sepal.Length 5.5 4.5 Given : depth 100 200 300 400 500 600 2.0 2.5 3.0 3.5 4.0 Sepal.Widthデータ 7 61,2,3, 5 Petal.Length 165 170 175 180 185 165 170 175 180 185 4 Notched Boxplots -10 3 2 -154,5,6, 1 -20 0.5 1.0 1.5 2.0 2.5 -25 67,8,9 -30 Petal.Width -35 lat… -10 4.5 5.5 6.5 7.5 1 2 3 4 5 6 7 4 -15 -20 -25 -30 2 -35 165 170 175 180 185 long 0 1 2 3 4 5 6 7 8 9 10 Group
  • 散布図• データがどのような散らばり具合をしているのかを調査したい場合、散 布図を描きます。 • plot(x , y) #ベクトルの表示 data <- c(1:100) plot(data) #irisのSepal.lengthとSepal.Widthの散布図 plot(iris[,1] , iris[,2]) #ベクトルの表示 #irisのSepal.lengthと Sepal.Widthの散布図 100 4.0 80 3.5 60 data iris[, 2] 3.0 40 2.5 20 2.0 0 0 20 40 60 80 100 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 Index iris[, 1]
  • 散布図• 変数が多くある場合、変数の1つずつの組み合わせだと手間がかかるの で、一気に組み合わせてみてみたい場合。 • plot(dataframe) • pars(dataframe) #複数変数の散布図組合せ(対散布図) plot(iris[-5]) #複数変数の対散布図(種類による色分け) pairs(iris[1:4], pch = 21,bg = c("red" , "green3" , "blue")[unclass(iris$Species)])
  • 散布図 #複数変数の散布図組合せ(対散布図) #複数変数の対散布図(種類による色分け) 2.0 2.5 3.0 3.5 4.0 0.5 1.0 1.5 2.0 2.5 2.0 2.5 3.0 3.5 4.0 0.5 1.0 1.5 2.0 2.5 7.5 7.5 6.5 6.5 Sepal.Length Sepal.Length 5.5 5.5 4.5 4.5 2.0 2.5 3.0 3.5 4.02.0 2.5 3.0 3.5 4.0 Sepal.Width Sepal.Width 7 7 6 6 5 5 Petal.Length 4 Petal.Length 4 3 3 2 2 1 1 0.5 1.0 1.5 2.0 2.50.5 1.0 1.5 2.0 2.5 Petal.Width Petal.Width 4.5 5.5 6.5 7.5 1 2 3 4 5 6 7 4.5 5.5 6.5 7.5 1 2 3 4 5 6 7
  • 線グラフ(折れ線グラフ)• データがどのように変化しているのかを分かるようにする。• 実は折れ線グラフは散布図にラインを引いただけなので比較的簡単に作 成できます。(type = “l”を指定) • plot(データ , type = “l”)#aho_dataを使って折れ線グラフplot(aho_data[,1] , type = "l”) 100 80 60 aho_data[, 1] 40 20 0 0 20 40 60 80 100 Index
  • 棒グラフ(1)• データがどの因子でどのぐらいボリュームになっているかを一目で分か る。 • barplot(データ) #単純な棒グラフ barplot(1:10) #色つき棒グラフ barplot(matrix(1:20, 5), col=rainbow(5)) #単純な棒グラフ #色つき棒グラフ 10 80 8 60 6 40 4 20 2 0 0
  • 棒グラフ(2)• データがどの因子でどのぐらいボリュームになっているかを一目で分か る。 • barplot(データ) #種類ごとでの棒グラフ barplot(table(iris[,5])) #色を付けたい場合 barplot(table(iris[,5]),col = c("red" , "green" ,"yellow")) #単純な棒グラフ #色つき棒グラフ 50 50 40 40 30 30 20 20 10 10 0 0 setosa versicolor virginica setosa versicolor virginica
  • 棒グラフ(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")) 50 40 30 20 10 0 aho
  • 参考(1):ggplot2• これまで紹介したのはRのデフォルトで利用できるパッケージ。• 自分で色々と細かく設定できるのがメリットですが、簡単に綺麗なグラ フを書きたい場合は、ggplot2というパッケージがおすすめ。• 過去に発表しています。 • http://www.slideshare.net/aad34210/ggplot2-110129-6739813
  • 参考(2):demo()• demo()という関数を利用することで、パッケージの参照デモをみること ができます。 #demo()のgraphicsを見てみる demo(graphics) Given : depth Edgar Andersons Iris Data 100 200 300 400 500 600 Notched Boxplots 2.0 2.5 3.0 3.5 4.0 0.5 1.0 1.5 2.0 2.5 7.5 6 6.5 Sepal.Length 5.5 4.5 165 170 175 180 185 165 170 175 180 185 4 -102.0 2.5 3.0 3.5 4.0 -15 Sepal.Width -20 -25 2 -30 7 6 -35 5 lat Petal.Length 4 -10 3 -15 2 0 1 -200.5 1.0 1.5 2.0 2.5 -25 -30 Petal.Width -35 1 2 3 4 5 6 7 8 9 10 165 170 175 180 185 4.5 5.5 6.5 7.5 1 2 3 4 5 6 7 Group long
  • 参考(3):グラフサンプル集• ネット上では有益なサンプル集がありますので、それを利用しない手は ありません。 ■R Graphical Manual http://rgm2.lab.nig.ac.jp/RGM2/images.php?show=all&pageID=1958• 過去に発表しています。 • http://www.slideshare.net/aad34210/tokyo-r-no8
  • 統計解析
  • 統計解析• グラフ作成と同様に奥のふかーい分野。• 今回はデータ全体がどのような分布になっているかを簡単に調査するための関数を紹 #最大値 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/
  • ご清聴ありがとうございました m(___)m