10分で分かる
R言語入門 ver2.6
大城信晃
2014/02/22 TokyoR#36
14年2月22日土曜日
開催情報
ATND
http://atnd.org/events/47713
セキココ

• http://sekico.co/zaseki/252
14年2月22日土曜日
終了したイベント
Rユーザー会 (11/29 - 30 @統数研)
http://prcs.ism.ac.jp/useRjp/
Japan.R (12/7 @ヤフー)
http://atnd.org/events/44682

14年2月22日土曜日
Rユーザー会@統数研

14年2月22日土曜日
Japan.R 2013@ヤフー

14年2月22日土曜日
本セッションの役割
• R初心者のために基礎を説明
• 本勉強会の以降の他セッションの前提
知識を得てもらう

14年2月22日土曜日
アジェンダ
• 自己紹介
• Rって何
• Rの使い方
• Rの資料
14年2月22日土曜日
自己紹介

• 名前:大城信晃
• Twitter:doradora09
• 職業:データマイニングエンジニア
• R:勉強中。
• 業務ではhadoop使ってます
• マイブーム:
• カクテル作り
• カメラ
14年2月22日土曜日
これまで/現在の仕事
• ショッピング関連
• 商品/製品DB 保守開発
• データ分析関連
• 行動ターゲティング
• データを使って顧客像を探る
• DMP(開発中)
14年2月22日土曜日
最近のハイライト
• CROSS 2014で発表してきました!

14年2月22日土曜日
最近のハイライト
• CROSS 2014で発表してきました!

14年2月22日土曜日
最近のハイライト
• 濱田さんの写真にも映りました!

14年2月22日土曜日
TokyoRでは
• 第1回から主に運営側で参加
• 初心者セッション
• 最近は懇親会でピザ注文したりお酒作
ったりしてます

14年2月22日土曜日
お菓子もご自由にどうぞ!

14年2月22日土曜日
お酒もあります!(懇親会)

14年2月22日土曜日
懇親会も是非
ご参加下さい!

14年2月22日土曜日
アジェンダ
• 自己紹介とお知らせ
• Rって何
• Rの使い方
• Rの資料
14年2月22日土曜日
R言語(アールげんご)は、オープンソ
ースでフリーソフトウェアの統計解
析向けプログラミング言語、及びそ
の開発実行環境である。
Wikipediaより引用

14年2月22日土曜日
での使われ方
• プロトタイプをRで作って検証
• PythonやC++で実装

GoogleとFacebookではRをどうやって使っているのか?
http://pracmper.blogspot.jp/2010/01/googlefacebookr.html

14年2月22日土曜日
用途で分類
コマンドライン形式(CUI)

実装

実務利用

プロトタイピング

業務専用
ソフト
画面上で操作(GUI)
14年2月22日土曜日
他言語との比較
特徴

価格

統計特化

無料

SAS/
SPSS

統計特化

数十万∼

エクセル

直感的

1万∼

高速だが
無料∼
C++
開発コスト高 数万
スクリプト
Python
無料
言語
14年2月22日土曜日

大規模データ
△
(メモリ依存)

○

速度
△
○

(約100万行)
実装次第

◎

実装次第

○
こんな方におすすめ
• 色々な統計手法を試してみたい方
• エクセルでは物足りない方
• まずは無料で始めてみたい方

14年2月22日土曜日
あると望ましいスキル
• プログラミングの基礎
• 統計学の知識
• (英語力)

14年2月22日土曜日
アジェンダ
• 自己紹介とお知らせ
• Rって何
• Rの使い方
• Rの資料
14年2月22日土曜日
インストール
Windows

Mac

http://cran.md.tsukuba.ac.jp/

Linux

14年2月22日土曜日

http://cran.md.tsukuba.ac.jp/
bin/windows/base/

http://cran.md.tsukuba.ac.jp/
Rコンソール起動

14年2月22日土曜日
Rコンソール起動

ココに処理を
記述していく

14年2月22日土曜日
処理の記述

3+5 = 8
10-7 = 3

14年2月22日土曜日
解析の流れ
データ
処理
レポート
14年2月22日土曜日
解析の流れ
変数
配列
行列

データ
関数

処理

データフレーム

CSV
14年2月22日土曜日

自作関数
パッケージ

レポート

作図
解析の流れ
変数
配列
行列

データ
関数

処理

データフレーム

CSV
14年2月22日土曜日

自作関数
パッケージ

レポート

作図
ここでは

• Rを使ったデータの表現/操作方法につ
いて説明します

14年2月22日土曜日
変数

値を入れる箱

> hako <- 10
> hako
[1] 10
> hako * 2
[1] 20

14年2月22日土曜日
変数

値を入れる箱

> hako <- 10
> hako

変数に値を入れる
左矢印のイメージ

[1] 10
> hako * 2
[1] 20

14年2月22日土曜日

変数に対して
処理(かけ算)
配列 複数の値をまとめる
> array <- c(10,20,30)
> array
[1] 10 20 30
> array * 2
[1] 20 40 60

14年2月22日土曜日
配列 複数の値をまとめる
> array <- c(10,20,30)
> array
[1] 10 20 30
> array * 2
[1] 20 40 60

14年2月22日土曜日

3つの値を
配列に格納
処理は
配列全体に
適用される
配列

各要素へのアクセス

> array[1]
[1] 10
> array[2]
[1] 20
> array[3]
[1] 30
14年2月22日土曜日
配列

各要素へのアクセス

> array[1]
[1] 10

配列[番号]で
1個ずつ値を
取り出せる

> array[2]
2個目
[1] 20
> array[3]
[1] 30
14年2月22日土曜日

3個目
行列

2次元の配列

> array2 <- matrix(c(10,20,30,  
40,50,60), 2, 3)
> array2
[,1] [,2] [,3]
[1,] 10 30 50
[2,] 20 40 60
14年2月22日土曜日
行列

2次元の配列

> array2 <- matrix(c(10,20,30,  
40,50,60), 2, 3)
> array2
[,1] [,2] [,3]
[1,] 10 30 50
[2,] 20 40 60
14年2月22日土曜日

matrixという
関数を利用して
作る
2行3列の
行列
行列覚え方

http://wakuteka.info/R/110729
より転載
14年2月22日土曜日
行列

各要素の指定

> array2[1,1]
[1] 10
> array2[1,]
[1] 10 30 50
> array2[,1]
[1] 10 20

14年2月22日土曜日
行列

各要素の指定

> array2[1,1]
[1] 10
> array2[1,]
[1] 10 30 50
> array2[,1]
[1] 10 20

14年2月22日土曜日

1行1列を
指定
1行目全体
を指定
1列目全体
を指定
複数の型を持てる

データフレーム
> 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

14年2月22日土曜日
複数の型を持てる

データフレーム
> 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

14年2月22日土曜日

data.frame関数で
セット
性別(bool型)
身長、体重(数値型)
データフレーム
> x$HEIGHT
[1] 158 162 177 173 166

> x$HEIGHT[1]
[1] 158

> x$HEIGHT[1:3]
[1] 158 162 177

14年2月22日土曜日

要素の指定
$で
身長(HEIGHT)
を全指定
身長1つめだけ

身長1-3番目
ここまで
• 変数:1種類の型の値を1つ入れる箱
(スカラー)

• 配列:1種類の型の値を複数入れる箱
(ベクトル)

• 行列:1種類の型の複数ベクトルをまと
めて表現

• データフレーム:複数の型のベクトルを
まとめて表現
14年2月22日土曜日
解析の流れ
変数
配列
行列

データ
関数

処理

データフレーム

CSV
14年2月22日土曜日

自作関数
パッケージ

レポート

作図
ここでは
• 関数の利用/作成方法
• CSVによるデータ読み込み

14年2月22日土曜日
関数

処理の呼び出し

• 関数は複数の処理をまとめたもの
• 様々な計算が手軽に実行できる

14年2月22日土曜日
関数

処理の呼び出し

目的
データの結合

C(データ)

合計

sum(データ)

個数を求める

length(データ)

平均

mean(データ)

標準偏差

sd(データ)

・・・

14年2月22日土曜日

関数名と書式

・・・
関数

合計を求める

> array
[1] 10 20 30
> sum(array)
[1] 60

14年2月22日土曜日
関数

合計を求める

> array

先ほどの配列

[1] 10 20 30
> sum(array)

関数名(引数)
で処理呼び出し

[1] 60
処理結果が
出力される
14年2月22日土曜日
関数

行列も足せる

> array2
[,1] [,2] [,3]
[1,] 10 30 50
[2,] 20 40 60
> sum(array2)
[1] 210
14年2月22日土曜日
関数

行列も足せる

> array2
[,1] [,2] [,3]
[1,] 10 30 50

先ほどの行列
array2

[2,] 20 40 60
> sum(array2)
[1] 210
14年2月22日土曜日

合計値が
表示される
変数 関数

結果を格納

> ret <- sum(array2)
> ret
[1] 210

14年2月22日土曜日
変数 関数

結果を格納

> ret <- sum(array2)
> ret
[1] 210

14年2月22日土曜日

合計値の
確認

処理結果を
変数に格納
CSV 関数 CSV読み込み

• 変数に毎回データを手入力するのは面倒
• CSV形式(カンマ区切り)ファイルを読み
込む関数がある

14年2月22日土曜日
CSV 関数 CSV読み込み
> hawks <- read.csv("hawks.csv")

> hawks
height salary
1

173 17000

2

178 14000

3

180 9000

14年2月22日土曜日
CSV 関数 CSV読み込み
> hawks <- read.csv("hawks.csv")

> hawks
height salary
1

173 17000

2

178 14000

3

180 9000

14年2月22日土曜日

read.csv関数に
hawks.csvという
CSVファイルを
渡して
変数に代入
CSV 関数 CSV読み込み
> hawks <- read.csv("hawks.csv")

> hawks
height salary
1

173 17000

2

178 14000

3

180 9000

14年2月22日土曜日

CSVファイルの
変数への
読み込みが
確認できる
自作関数

自分で関数を作る

• 関数は自分で定義することも可能
• 繰り返し使う処理は自作関数にする

14年2月22日土曜日
関数の書き方
関数名 <- function (引数) {
処理
}

14年2月22日土曜日
自作関数

自分で関数を作る

> varp <- function(x) {
retsult <- var(x) * (length(x) - 1) / length(x)
retsult
}
> varp(array)
[1] 66.66667
14年2月22日土曜日
自作関数

自分で関数を作る
関数の定義

> varp <- function(x) {

retsult <- var(x) * (length(x) - 1) / length(x)
retsult
}
> varp(array)
[1] 66.66667
14年2月22日土曜日

処理を記述する
実行
ここまで
• 組み込み関数:基本的な演算が可能
• CSV:read.csv関数でCSV形式のデ
ータを読み込める

• 自作関数:自身で関数を定義できる
14年2月22日土曜日
解析の流れ
変数
配列
行列

データ
関数

処理

データフレーム

CSV
14年2月22日土曜日

自作関数
パッケージ

レポート

作図
ここでは
• 作図関数
• 外部パッケージの利用方法

14年2月22日土曜日
標準作図関数

作図

• 標準の関数でも色々と作図可能
目的

関数名

ヒストグラム

hist

散布図

plot

箱ヒゲ図

boxplot

・・・

・・・

参考URL
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/50.html
14年2月22日土曜日
作図

標準作図関数

> x <- rnorm(50)
> hist(x, breaks=seq(-3, 3,1))

14年2月22日土曜日
標準作図関数

作図

乱数生成
> x <- rnorm(50)
> hist(x, breaks=seq(-3, 3,1))

ヒストグラム
作図関数

14年2月22日土曜日
パッケージ

関数をまとめたもの

• 複数の関数をまとめたもの
• 様々なパッケージがCRANというシステ
ムにて無料公開されている

• 自作のパッケージも公開できる
14年2月22日土曜日
例

• 作図パッケージggplot2を使えるよう
にする

14年2月22日土曜日
パッケージ

外部パッケージ

作図

> install.packages( ggplot2 )
> library("ggplot2")

14年2月22日土曜日
パッケージ

外部パッケージ

作図

> install.packages( ggplot2 )
> library("ggplot2")

パッケージを
ロード

14年2月22日土曜日

CRANから
パッケージ
ダウンロード&
インストール
パッケージ
作図

a <- 1:10
b <- a^2
qplot(a,b)

14年2月22日土曜日

qplotが利用可能
パッケージ

qplotが利用可能

作図

a <- 1:10
b <- a^2
qplot(a,b)

ggplot2
パッケージ
の関数
14年2月22日土曜日
パッケージ

参考資料

作図

http://www.slideshare.net/dichika/ggplot2
14年2月22日土曜日
パッケージ

紹介:分析用もある

処理
目的
主成分分析
対応分析
クラスター分析
線形回帰分析
生存分析
ニューラルネット
・・・

14年2月22日土曜日

パッケージ名
stats(組み込み済)
MASS
stats
stats
survival
nnet
・・・
詳細はこちらの書籍で
• 過去にTokyoRでもテキストとして利用

http://amazon.jp/dp/4627096011/
14年2月22日土曜日
ここまで
• 作図関数:可視化が可能
• パッケージ:CRANからダウンロード
して利用する。作図用や分析用など
色々ある

14年2月22日土曜日
Rで一連の分析が可能
データ
処理
レポート
14年2月22日土曜日
アジェンダ
• 自己紹介とお知らせ
• Rって何
• Rの使い方
• Rの資料
14年2月22日土曜日
• 日本語の資料

14年2月22日土曜日
seekR
• R言語用検索エンジン
http://seekr.jp/

14年2月22日土曜日
ちなみに
• 中の人がTokyoRで発表して下さいました!

http://www.slideshare.net/hiratake55/
seekrjp-22281554
14年2月22日土曜日
RjpWiki
• R言語のWiki
http://www.okada.jp.org/RWiki/

14年2月22日土曜日
Rコミュニティ発表資料
• Tokyo.R, Nagoya.R, Tukuba.Rのアーカイブ
http://lab.sakaue.info/wiki.cgi/JapanR2010?page=FrontPage
「勉強会発表内容一覧」のリンクから

14年2月22日土曜日
RとSQLの対応付け
• SQLが分かる人は一読の価値有り
http://d.hatena.ne.jp/a_bicky/20110529/1306667230

14年2月22日土曜日
• 以下海外のサイト(英語)

14年2月22日土曜日
CRAN Task Viws
• Rには2000以上パッケージがある
• 用途別におすすめパッケージを紹介
http://cran.r-project.org/web/views/

14年2月22日土曜日
R-Chart
• Rでの作図のサンプルが多数ある
http://www.r-chart.com/

14年2月22日土曜日
まとめ
• Rは無料の統計解析ソフト
• データ解析からレポートまで利用可能
• Web上の資料も充実

14年2月22日土曜日
まとめ
• Rは無料の統計解析ソフト
• データ解析からレポートまで利用可能
• Web上の資料も充実
是非使ってみましょう!
14年2月22日土曜日
ご清聴ありがとうございました

14年2月22日土曜日
質疑応答

14年2月22日土曜日
予備資料

14年2月22日土曜日
連携も可能
プログラミング言語寄り
(カスタマイズ可能)

.C()関数

RExcel

実務利用

プロトタイピング

業務専用
パッケージ
直感的な操作(用途は限定)
14年2月22日土曜日
イケメンツールRStudio

14年2月22日土曜日
RStudio資料

http://www.slideshare.net/wdkz/
rstudio-13866958
14年2月22日土曜日
初心者だけど2回目
• 箕田さんの初心者セッション
• 集計、条件分岐、ループ、作図など

http://www.slideshare.net/
aad34210/tokyo-r30-beginner
14年2月22日土曜日

http://www.slideshare.net/
aad34210/tokyo-r21
Tips

14年2月22日土曜日
CSV 関数 補足:クリップボード
#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
14年2月22日土曜日
CSV 関数 補足2:関数調べ方
> ?read.table
> ??read.table
>help(read.table)
ヘルプを
呼び出すことが
出来る
14年2月22日土曜日
CSV 関数 補足2:関数調べ方
> ?read.table
> ??read.table
>help(read.table)
後半には
用例もあるので
参考に
14年2月22日土曜日

10分で分かるr言語入門ver2 6