10分で分かる 
R言語入門 ver2.9 
大城信晃 
2014/09/20 TokyoR#43 1
開催情報 
ATND 
• https://atnd.org/events/56275 
セキココ 
• http://sekico.co/zaseki/384 
! 
2
本セッションの役割 
• R初心者のために基礎を説明 
• 本勉強会の以降の他セッションの前提 
知識を得てもらう 
• 資料は後ほど公開しますのでざっと眺 
めていただければと思います 
3
アジェンダ 
•自己紹介 
• Rって何 
• Rの使い方 
• Rの資料 
4
自己紹介• 名前:大城信晃 
• Twitter:doradora09 
• 職業:データマイニングエンジニア 
• R:勉強中。 
• 業務ではhadoop使ってます 
• マイブーム: 
• カクテル作り 
• カメラ 
• 肉(ブロック) 5
これまで/現在の仕事 
• ショッピング関連 
• 商品/製品DB 保守開発 
• データ分析関連 
• 行動ターゲティング 
• データを使って顧客像を探る 
• DMP 
6
TokyoRでは 
• 第1回から主に運営側で参加 
• 初心者セッション 
• 最近は懇親会でピザ注文したりお酒作っ 
たりしてます 
7
最近の個人的news 
8
執筆しました!(一部) 
http://www.amazon.co.jp/dp/4798134902 9
その他お知らせ 
10
お酒もあります!(懇親会) 
11
懇親会も是非 
ご参加下さい! 
12
アジェンダ 
• 自己紹介とお知らせ 
•Rって何 
• Rの使い方 
• Rの資料 
13
R言語(アールげんご)は、オープン 
ソースでフリーソフトウェアの統計 
解析向けプログラミング言語、及び 
その開発実行環境である。 
Wikipediaより引用 
14
での使われ方 
• プロトタイプをRで作って検証 
• PythonやC++で実装 
GoogleとFacebookではRをどうやって使っているのか? 
http://pracmper.blogspot.jp/2010/01/googlefacebookr.html 
15
用途で分類 
コマンドライン形式(CUI) 
実務利用プロトタイピング 
画面上で操作(GUI) 
業務専用 
ソフト 
実装 
16
他言語との比較 
特徴価格大規模データ速度 
統計特化無料△ 
(メモリ依存) △ 
SAS/ 
SPSS 統計特化数十万~ ○ ○ 
エクセル直感的1万~ × 
(約100万行) × 
C++ 高速だが 
開発コスト高 
無料~ 
数万実装次第◎ 
Python スクリプト 
言語無料実装次第○ 
17
こんな方におすすめ 
• 色々な統計手法を試してみたい方 
• エクセルでは物足りない方 
• まずは無料で始めてみたい方 
18
あると望ましいスキル 
• プログラミングの基礎 
• 統計学の知識 
• (英語力) 
19
アジェンダ 
• 自己紹介とお知らせ 
• Rって何 
•Rの使い方 
• Rの資料 
20
インストール 
Windows http://cran.md.tsukuba.ac.jp/ 
bin/windows/base/ 
Mac http://cran.md.tsukuba.ac.jp/ 
Linux http://cran.md.tsukuba.ac.jp/ 
21
Rコンソール起動 
22
Rコンソール起動 
ココに処理を 
記述していく 
23
処理の記述 
3+5 = 8 
10-7 = 3 
24
解析の流れ 
データ 
処理 
レポート 
25
解析の流れ 
データ 
処理 
レポート 
変数 
配列 
行列 
関数 
自作関数 
パッケージ 
データフレーム 
CSV 作図 
26
解析の流れ 
データ 
処理 
レポート 
変数 
配列 
行列 
データフレーム 
関数 
自作関数 
パッケージ 
CSV 作図 
27
ここでは 
• Rを使ったデータの表現/操作方法につ 
いて説明します 
28
値を入れる箱 
変数 
> hako <- 10 
> hako 
[1] 10 
> hako * 2 
[1] 20 
29
値を入れる箱 
変数 
> hako <- 10 
> hako 
[1] 10 
> hako * 2 
[1] 20 
変数に値を入れる 
左矢印のイメージ 
変数に対して 
処理(かけ算) 
30
複数の値をまとめる 
配列 
> array <- c(10,20,30) 
> array 
[1] 10 20 30 
> array * 2 
[1] 20 40 60 
31
複数の値をまとめる 
> array <- c(10,20,30) 
> array 
[1] 10 20 30 
> array * 2 
[1] 20 40 60 
処理は 
配列全体に 
適用される 
配列 
3つの値を 
配列に格納 
32
各要素へのアクセス 
配列 
> array[1] 
[1] 10 
> array[2] 
[1] 20 
> array[3] 
[1] 30 
33
各要素へのアクセス 
> array[1] 
[1] 10 
> array[2] 
[1] 20 
> array[3] 
[1] 30 
配列[番号]で 
1個ずつ値を 
取り出せる 
配列 
2個目 
3個目 
34
2次元の配列 
行列 
> array2 <- matrix(c(10,20,30,   
40,50,60), 2, 3) 
> array2 
[,1] [,2] [,3] 
[1,] 10 30 50 
[2,] 20 40 60 
35
2次元の配列 
> array2 <- matrix(c(10,20,30,   
40,50,60), 2, 3) 
> array2 
[,1] [,2] [,3] 
[1,] 10 30 50 
[2,] 20 40 60 
matrixという 
関数を利用して 
作る 
行列 
2行3列の 
行列 
36
行列覚え方 
http://wakuteka.info/R/110729 
37 より転載
各要素の指定 
行列 
> array2[1,1] 
[1] 10 
> array2[1,] 
[1] 10 30 50 
> array2[,1] 
[1] 10 20 
38
各要素の指定 
> array2[1,1] 
[1] 10 
> array2[1,] 
[1] 10 30 50 
> array2[,1] 
[1] 10 20 
1行1列を 
指定 
行列 
1行目全体 
を指定 
1列目全体 
を指定 
39
複数の型を持てる 
データフレーム 
> sex <- c("F","F","M","M","M") #性別 
> height <- c(158,162,177,173,166) #身長 
> weight <- c(51,55,72,57,64) #体重 
> ( x <- data.frame(SEX=sex, HEIGHT=height, WEIGHT=weight) ) 
SEX HEIGHT WEIGHT 
1 F 158 51 
2 F 162 55 
3 M 177 72 
4 M 173 57 
5 M 166 64 
40
複数の型を持てる 
> sex <- c("F","F","M","M","M") #性別 
> height <- c(158,162,177,173,166) #身長 
> weight <- c(51,55,72,57,64) #体重 
> ( x <- data.frame(SEX=sex, HEIGHT=height, WEIGHT=weight) ) 
SEX HEIGHT WEIGHT 
1 F 158 51 
2 F 162 55 
3 M 177 72 
性別(文字列型) 
4 M 173 57 
身長、体重(数値型) 
5 M 166 64 
データフレーム 
data.frame関数で 
セット 
41
要素の指定 
> x$HEIGHT 
[1] 158 162 177 173 166 
! 
> x$HEIGHT[1] 
[1] 158 
! 
> x$HEIGHT[1:3] 
[1] 158 162 177 
$で 
身長(HEIGHT) 
を全指定 
データフレーム 
身長1つめだけ 
身長1-3番目 
42
ここまで 
• 変数:1種類の型の値を1つ入れる箱(スカラー) 
• 配列:1種類の型の値を複数入れる箱(ベクトル) 
• 行列:1種類の型の複数ベクトルをまとめて表現 
• データフレーム:複数の型のベクトルをまとめて 
表現 
43
CSV 
解析の流れ 
データ 
処理 
レポート 
変数 
配列 
行列 
関数 
自作関数 
データフレームパッケージ 
作図 
44
ここでは 
• 関数の利用/作成方法 
• CSVによるデータ読み込み 
45
関数処理の呼び出し 
• 関数は複数の処理をまとめたもの 
• 様々な計算が手軽に実行できる 
46
関数処理の呼び出し 
目的関数名と書式 
データの結合C(データ) 
合計sum(データ) 
個数を求めるlength(データ) 
平均mean(データ) 
標準偏差sd(データ) 
・・・・・・ 
47
関数合計を求める 
> array 
[1] 10 20 30 
> sum(array) 
[1] 60 
48
関数合計を求める 
> array 
[1] 10 20 30 
> sum(array) 
[1] 60 
先ほどの配列 
関数名(引数) 
で処理呼び出し 
処理結果が 
出力される 
49
行列も足せる 
関数 
> array2 
[,1] [,2] [,3] 
[1,] 10 30 50 
[2,] 20 40 60 
> sum(array2) 
[1] 210 
50
行列も足せる 
> array2 
[,1] [,2] [,3] 
[1,] 10 30 50 
[2,] 20 40 60 
> sum(array2) 
[1] 210 
合計値が 
表示される 
関数 
先ほどの行列 
array2 
51
関数結果を格納 
変数 
> ret <- sum(array2) 
> ret 
[1] 210 
52
関数結果を格納 
> ret <- sum(array2) 
> ret 
[1] 210 
処理結果を 
変数に格納 
変数 
合計値の 
確認 
53
CSV読み込み 
CSV 関数 
• 変数に毎回データを手入力するのは面倒 
• CSV形式(カンマ区切り)ファイルを読み 
込む関数がある 
54
CSV 関数 
CSV読み込み 
> hawks <- read.csv("hawks.csv") 
! 
> hawks 
height salary 
1 173 17000 
2 178 14000 
3 180 9000 
55
CSV 関数 
CSV読み込み 
> hawks <- read.csv("hawks.csv") 
! 
> hawks 
height salary 
1 173 17000 
2 178 14000 
3 180 9000 
read.csv関数に 
hawks.csvという 
CSVファイルを 
渡して 
変数に代入 
56
CSV 関数CSV読み込み 
> hawks <- read.csv("hawks.csv") 
! 
> hawks 
height salary 
1 173 17000 
2 178 14000 
3 180 9000 
CSVファイルの 
変数への 
読み込みが 
確認できる57
自分で関数を作る 
自作関数 
• 関数は自分で定義することも可能 
• 繰り返し使う処理は自作関数にする 
58
関数の書き方 
関数名 <- function (引数) { 
処理 
} 
59
自作関数自分で関数を作る 
> varp <- function(x) { 
retsult <- var(x) * (length(x) - 1) / length(x) 
retsult 
} 
> varp(array) 
[1] 66.66667 
60
自作関数自分で関数を作る 
> varp <- function(x) { 
関数の定義 
retsult <- var(x) * (length(x) - 1) / length(x) 
retsult 
} 
処理を記述する 
> varp(array) 
実行 
[1] 66.66667 
61
ここまで 
• 組み込み関数:基本的な演算が可能 
• CSV:read.csv関数でCSV形式のデー 
タを読み込める 
• 自作関数:自身で関数を定義できる 
62
解析の流れ 
データ 
処理 
レポート 
変数 
配列 
行列 
関数 
自作関数 
パッケージ 
データフレーム 
CSV 作図 
63
ここでは 
• 作図関数 
• 外部パッケージの利用方法 
64
作図標準作図関数 
• 標準の関数でも色々と作図可能 
目的関数名 
ヒストグラムhist 
散布図plot 
箱ヒゲ図boxplot 
・・・・・・ 
参考URL 
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/50.html 
65
作図標準作図関数 
> x <- rnorm(50) 
> hist(x, breaks=seq(-3, 3,1)) 
66
作図標準作図関数 
乱数生成 
> x <- rnorm(50) 
> hist(x, breaks=seq(-3, 3,1)) 
ヒストグラム 
作図関数 
67
作図標準作図関数 
> x <- rnorm(50) 
> plot(x) 
乱数生成 
プロット 
関数 
68
関数をまとめたもの 
パッケージ 
• 複数の関数をまとめたもの 
• 様々なパッケージがCRANというシステ 
ムにて無料公開されている 
• 自作のパッケージも公開できる 
69
例 
• 作図パッケージggplot2を使えるよう 
にする 
70
パッケージ外部パッケージ 
作図 
> install.packages(“ggplot2”) 
> library("ggplot2") 
71
パッケージ外部パッケージ 
作図 
> install.packages(“ggplot2”) 
> library("ggplot2") CRANから 
パッケージ 
ダウンロード& 
インストール 
パッケージを 
ロード 
72
パッケージqplotが利用可能 
作図 
a <- 1:10 
b <- a^2 
qplot(a,b) 
73
パッケージqplotが利用可能 
作図 
a <- 1:10 
b <- a^2 
qplot(a,b) 
ggplot2 
パッケージ 
の関数74
qplot(carat, price, 
data = diamonds, 
colour = clarity) 
サンプルデータ 
diamonds 
パッケージ 
作図 
diamonds 
データの 
carat, priceを 
描画 
75
パッケージ参考資料 
作図 
http://www.slideshare.net/dichika/ggplot2 76
パッケージ紹介:分析用もある 
目的パッケージ名 
主成分分析stats(組み込み済) 
対応分析MASS 
クラスター分析stats 
線形回帰分析stats 
生存分析survival 
ニューラルネットnnet 
・・・・・・ 
処理 
77
詳細はこちらの書籍で 
• 過去にTokyoRでもテキストとして利用 
http://amazon.jp/dp/4627096011/ 
78
ここまで 
• 作図関数:可視化が可能 
• パッケージ:CRANからダウンロード 
して利用する。作図用や分析用など色々 
ある 
79
Rで一連の分析が可能 
データ 
処理 
レポート 
80
アジェンダ 
• 自己紹介とお知らせ 
• Rって何 
• Rの使い方 
•Rの資料 
81
• 日本語の資料 
82
seekR 
• R言語用検索エンジン 
http://seekr.jp/ 
83
ちなみに 
• 中の人がTokyoRで発表して下さいました! 
http://www.slideshare.net/hiratake55/ 
seekrjp-2842281554
RjpWiki 
• R言語のWiki 
http://www.okada.jp.org/RWiki/ 
85
Rコミュニティ発表資料 
• Tokyo.R, Nagoya.R, Tukuba.Rのアーカイブ 
http://lab.sakaue.info/wiki.cgi/JapanR2010?page=FrontPage 
「勉強会発表内容一覧」のリンクから 
86
RとSQLの対応付け 
• SQLが分かる人は一読の価値有り 
http://d.hatena.ne.jp/a_bicky/20110529/1306667230 
87
サンプルデータ 
• 統計を学びたい人へ贈る、統計解析に使え 
るデータセットまとめ 
• http://d.hatena.ne.jp/hoxo_m/ 
20120214/p1 
• データセット一覧 
• http://vincentarelbundock.github.io/ 
Rdatasets/datasets.html 
88
89
• 以下海外のサイト(英語) 
90
CRAN Task Viws 
• Rには5000以上パッケージがある 
(2014/09現在) 
• 用途別におすすめパッケージを紹介 
http://cran.r-project.org/web/views/ 
91
CRAN Task Viws 
• 日本語訳してるサイト(一部機械翻訳) 
http://www.trifields.jp/r-cran-task-views-639 
92
R-Chart 
• Rでの作図のサンプルが多数ある 
http://www.r-chart.com/ 
93
まとめ 
•Rは無料の統計解析ソフト 
•データ解析からレポートまで利用可能 
•Web上の資料も充実 
94
まとめ 
•Rは無料の統計解析ソフト 
•データ解析からレポートまで利用可能 
•Web上の資料も充実 
是非使ってみましょう! 
95
ご清聴ありがとうございました 
96
質疑応答 
97
予備資料 
98
連携も可能 
プログラミング言語寄り 
(カスタマイズ可能) 
.C()関数 
実務利用プロトタイピング 
業務専用 
パッケージ 
直感的な操作(用途は限定) 
RExcel 
99
イケメンツールRStudio 
100
RStudio資料 
http://www.slideshare.net/wdkz/ 
rstudio-11013866958
初心者だけど2回目 
• 箕田さんの初心者セッション 
• 集計、条件分岐、ループ、作図など 
http://www.slideshare.net/ 
aad34210/tokyo-r21 
http://www.slideshare.net/ 
aad34210/tokyo-r30-beginner 102
Tips 
103
関数 補足:クリップボード 
#windowsの場合! 
>hawks <- read.table("clipboard", 
header=TRUE,sep=’,’);! 
#macの場合! 
>hawks <- read.table(pipe("pbpaste"), 
header=TRUE,sep=’,’)! 
> hawks! 
クリップボードからも 
height salary! 
1 173 17000! 
読み込み可能 
2 178 14000! 
3 180 9000! 
CSV 
104
CSV 関数 補足2:関数調べ方 
> ?read.table 
> ??read.table 
>help(read.table) 
! ヘルプを 
呼び出すことが 
出来る 
105
CSV 関数 補足2:関数調べ方 
> ?read.table 
> ??read.table 
>help(read.table) 
後半には 
用例もあるので 
参考に 
! 
106
紹介:テキスト解析ツール 
KH Corder 
• 茶筅やRを裏側で利用(Rのソースで出力可) 
• GUIで形態素解析、対応分析、ネット 
ワーク分析が簡単にできる 
http://khc.sourceforge.net/ 
107

10分で分かるr言語入門ver2.9 14 0920