Recommended
PPTX
Tokyo r24 r_graph_tutorial
PPTX
PPTX
PPTX
PPTX
PDF
10分で分かるr言語入門ver2.10 14 1101
PDF
PDF
10分で分かるr言語入門ver2 upload用
PDF
Rによるデータ整形入門 Introduction to Data Transformation with R
PDF
PDF
PPTX
PDF
10分で分かるr言語入門ver2.9 14 0920
PDF
PDF
PDF
PDF
PDF
2017年3月版データマエショリスト入門(誤植修正版)
PDF
PDF
Tokyor60 r data_science_part1
PPTX
PDF
R入門(dplyrでデータ加工)-TokyoR42
PPTX
PPTX
PDF
ODP
PPTX
PPTX
PDF
PDF
RとJavaScript Visualizationを俯瞰しよう
More Related Content
PPTX
Tokyo r24 r_graph_tutorial
PPTX
PPTX
PPTX
PPTX
PDF
10分で分かるr言語入門ver2.10 14 1101
PDF
PDF
10分で分かるr言語入門ver2 upload用
What's hot
PDF
Rによるデータ整形入門 Introduction to Data Transformation with R
PDF
PDF
PPTX
PDF
10分で分かるr言語入門ver2.9 14 0920
PDF
PDF
PDF
PDF
PDF
2017年3月版データマエショリスト入門(誤植修正版)
PDF
PDF
Tokyor60 r data_science_part1
PPTX
PDF
R入門(dplyrでデータ加工)-TokyoR42
PPTX
PPTX
Viewers also liked
PDF
ODP
PPTX
PPTX
PDF
PDF
RとJavaScript Visualizationを俯瞰しよう
PDF
PDF
PDF
PPTX
KEY
PDF
PDF
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜
PDF
PDF
PDF
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
PDF
PPT
【スライド資料】ゼロからの起業論〜今日からあなたもアントレプレナー〜(森光瑠)
PPTX
PPTX
Similar to Tokyo r21 修正版
PPTX
PDF
PDF
PDF
PDF
DOCX
PDF
PDF
DOCX
PDF
PDF
PDF
PDF
PDF
PDF
テキストマイニングで発掘!? 売上とユーザーレビューの相関分析
PDF
20111130 jrms発表資料(esomar発表報告)(配布版)
PDF
PDF
PDF
PDF
B15 SQL Server と Index の進化 by 熊澤幸生
More from Takashi Minoda
PDF
PPTX
RStudioでRをはじめよう(R for Beginner using RStudio)
PPTX
RからGoogle Cloud Vision API を利用する
PPTX
PPTX
PPTX
PPTX
PPTX
PDF
PDF
PPT
ODP
PDF
Tokyo r21 修正版 1. 続
はじめての
TOKYO.R #21
簑田 高志
<#>
2. 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-r18
5. 今回の話
• 今回の話は前回の続き。
• Rの基礎編です。
i. 条件分岐
ii. ループ
iii.グラフ作成
iv.統計解析
• 資料中は、コードと例文を以下のようにハイライト
しています。
• 基本コード:Sample
• 例文: Sample
6. 7. 8. 9. 条件分岐
• 条件分岐とは?
• ある条件で場合分けをしたい場合はIf文、Else文を使う。
• if (条件文){処理内容}
• 例えば…
• 売上金額が10万以上であれば、A-Class、それ以外はOther。
x <- 100000
if (x >= 100000)
{print ("A-Class")} else {print("Other")}
10. 条件分岐
• IFELSE文
• IFELSE文で一つのコードでIF文ができる。
• ifelse(条件,データが真の場合,偽の場合)
• 例えば…
• 売上金額が10万以上であれば、Aクラス、それ以外はOther。
x <- 100000
ifelse(x >= 100000 , "A-Class" , "B-Class")
11. 条件分岐
• SWITCH文
• 複数の条件で分岐させたい場合
• switch(データ,ケース1 , ケース2 , 一致する場合がないケース)
• 例えば…
• Tokyoから売上が上がっている場合は、Japanを。それ以外はOther
city <- "Tokyo”
switch(city ,"Tokyo" = print("Japan") , print("Other"))
12. 13. 14. 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])}
15. WHILE文
• While文
• ある条件が成り立っている場合にずっとループ処理をし続ける。
• 注意:ずっと条件が成り立っている場合は、無限ループしてしまう
ので、気をつけること。
• while (条件式) {処理}
• 例えば…
• 5以下を足し続ける。
x <- 0
while (x <= 4) {x <- x +1}
x
16. 例題(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 ))}
17. 例題(2)
• 前のページの問題は意外とすぐにとける
• では、 世界のナベアツでやってみよう。
• 問題
• 1〜100までの数字の中で、
• 3の倍数 :“Aho” と表示
• 5 の倍数 :“アホ” と表示
• 回答
• For文で1:100までをベクトル生成
• 3の倍数:“%%”で余りを計算し割り切れる数を判定
• 5の倍数:“%%”で余りを計算し割り切れる数を判定
• それぞれIF文で“Aho”か“アホ”か判定
• Print文で表示
18. 例題(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)}
}
}
19. 例題(3)本当の世界のナベアツを実装してみた
• 問題で使ったナベアツ問題
• 1〜100までの数字の中で、
• 3の倍数 :“Aho” と表示
• 5 の倍数 :“アホ” と表示
• 本当のナベアツは…
• 1〜100までの数字の中で、
• 3の倍数 :“Aho” と表示 3のつく倍数をアホに
• 3のつく倍数 :“アホ” と表示 しなきゃいけない
• 数字のベクトルであれば「%%」を利用することで、判定が可能。
• でも「3がつく数」ってどう判定するのか?
• → grepを利用して判定すれば良いかも。
20. 例題(3)本当の世界のナベアツを実装してみた
• 問題
• 1〜100までの数字の中で、
• 3の倍数 :“Aho” と表示
• 3がつく数 :“アホ” と表示
# 3の倍数はアホ、3の着く数字はAho
true_nabeatsu <- function(n , baisuu1 , baisuu2) {
for( i in 1:n) {
if (i%%baisuu1 == 0 ) {print("Aho")}
else if (!i%%baisuu2|grepl(baisuu2,i) == TRUE) {print("アホ")}
else {print(i)}
}
}
true_nabeatsu(100 , 5 , 3)
21. 22. グラフ作成
• データを解析する前に、変数がどのような分布になっているかをビジュ
アルで確認して、データの分布等を確かめる。
• 結果をレポートとしてまとめ、レビュアー(報告者)への理解を深める
ためにグラフを作成する。
• グラフ作成は「奥が深い」ため、今回は代表的なグラフのみ紹介して、
残りのパッケージ等はAppendixとして紹介します。
Edgar Anderson's 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
6
1,2,3,
5
Petal.Length 165 170 175 180 185 165 170 175 180 185
4
Notched Boxplots
-10
3
2
-15
4,5,6,
1
-20
0.5 1.0 1.5 2.0 2.5
-25
6
7,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
23. 散布図
• データがどのような散らばり具合をしているのかを調査したい場合、散
布図を描きます。
• 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]
24. 散布図
• 変数が多くある場合、変数の1つずつの組み合わせだと手間がかかるの
で、一気に組み合わせてみてみたい場合。
• plot(dataframe)
• pars(dataframe)
#複数変数の散布図組合せ(対散布図)
plot(iris[-5])
#複数変数の対散布図(種類による色分け)
pairs(iris[1:4], pch = 21,bg = c("red" , "green3" ,
"blue")[unclass(iris$Species)])
25. 散布図
#複数変数の散布図組合せ(対散布図) #複数変数の対散布図(種類による色分け)
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.0
2.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.5
0.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
26. 27. 28. 棒グラフ(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
29. 棒グラフ(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
30. 31. 参考(2):demo()
• demo()という関数を利用することで、パッケージの参照デモをみること
ができます。
#demo()のgraphicsを見てみる
demo(graphics)
Given : depth
Edgar Anderson's 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
-10
2.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
-20
0.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
32. 33. 34. 35. 36. まとめ
• IF文
• 条件分岐をさせたい時に利用する。ifelse も使えるよ
• For文
• 繰り返し処理を行いたい場合に利用する。
• 条件が正の場合に繰り返し処理をするWhileもある。
• FizzBuzz
• IF文とFor文を使って、FizzBuzz問題を解く。
• 世界のナベアツもできるよ!
• グラフ作成
• 奥の深い世界…
• demo(graphics)で試してみよう。
• plot,barplot
• ggplot2など様々なパッケージがある。
• 統計解析
• 簡単な関数で、統計量を計算することができる。
• max,min,range,quantile,summary
37. 参考文献・資料
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/
38.