r入門(dplyrでデータ加工)-tokyor42

Post on 15-Jun-2015

7.150 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

R入門(dplyrでデータ加工)-TokyoR42

TRANSCRIPT

R入門(dplyrでデータ加工)第42回R勉強会@東京(#TokyoR)

@gepuro

自己紹介

早川 敦士 @gepuro電気通信大学大学院 修士2年専門:信頼性工学

言語:R言語、Python特技:花火打ち揚げ

ハッカーズバーでバイトしてます

http://hackersbar.net/

告知

2014年12月6日にJapan.Rを開催します。

分析ツール

● R○ 無料,非エンジニアでも扱いやすい言語

● Python○ Numpy, Scipy, Scikit-learnなどの科学計算ライブラリ

が充実。エンジニアに親しまれやすい

● Julia○ 2012年登場,玄人向け, 開発段階

● Excel○ ほとんどの人が使える。ピボットテーブル便利

● などJapan.Rでパネルディスカッションを予定してます。

R言語(あーるげんご)はオープンソース・フリーソフトウェアの統計解析向けのプログラミング言語及びその開発実行環境である。

wikipediaより

R言語の使い方に困ったら

● Rjpwiki○ http://www.okada.jp.org/RWiki/

● RPubs○ https://rpubs.com/

● seekR○ http://seekr.jp/

● R-tips○ http://cse.naro.affrc.go.jp/takezawa/r-tips/r.html

● JIN’S Page○ http://www1.doshisha.ac.jp/~mjin/R/

分析作業の流れ

データベース

データ加工

モデリング・可視化

分析作業の流れ

データ取得

データ加工

モデリング・可視化

SQL クローリング

分析作業の流れ

データベース

データ加工

モデリング・可視化

マージ

型変換

縦横変換

集計

データフレーム

分析作業の流れ

データベース

データ加工

モデリング・可視化

重回帰分析 ヒストグラム

散布図決定木分析

分析作業の流れ

データベース

データ加工

モデリング・可視化

マージ

型変換

縦横変換

集計

今日はここを扱う

データフレーム

変数

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

配列

> hakos <- c(1,2,3)> hakos[1] 1 2 3> hakos + hakos[1] 2 4 6> hakos * 10[1] 10 20 30

配列その2

> hakos[1] 1 2 3> hakos[1][1] 1> hakos[2][1] 2

for

for(i in 1:10){ print(i)}

if

a <- 2if(a %% 2 == 0){ print("偶数")}else{ print("奇数")}

データフレーム

> df <- data.frame(a=1:3, b=4:6)> df a b1 1 42 2 53 3 6

データフレームその2

> df$c <- df$a + df$b> df a b c1 1 4 52 2 5 73 3 6 9

データフレームその3

> df a b c1 1 4 52 2 5 73 3 6 9

> df[1,] a b c1 1 4 5> df[,1][1] 1 2 3

行にアクセス

列にアクセス

データ読み込み

通常の方法

> train <- read.csv("data/train.csv")

高速読み込み

> library(data.table)> train <- fread("data/train.csv")

データの集計

データ処理のパッケージを読み込み

> library(dplyr)

サンプルデータの読み込み

> data(iris)

dplyrで集計

> iris %>% + group_by(Species) %>% + summarise(SLM= mean(Sepal.Length))Source: local data frame [3 x 2]

Species SLM1 setosa 5.0062 versicolor 5.9363 virginica 6.588

irisというデータセットを利用する

> iris %>% + group_by(Species) %>% + summarise(SLM= mean(Sepal.Length))Source: local data frame [3 x 2]

Species SLM1 setosa 5.0062 versicolor 5.9363 virginica 6.588

> iris %>% + group_by(Species) %>% + summarise(SLM= mean(Sepal.Length))Source: local data frame [3 x 2]

Species SLM1 setosa 5.0062 versicolor 5.9363 virginica 6.588

左から来たものを右へ受け流す

> iris %>% + group_by(Species) %>% + summarise(SLM= mean(Sepal.Length))Source: local data frame [3 x 2]

Species SLM1 setosa 5.0062 versicolor 5.9363 virginica 6.588

Speciesという列ごとに処理する

集計する

> iris %>% + group_by(Species) %>% + summarise(SLM= mean(Sepal.Length))Source: local data frame [3 x 2]

Species SLM1 setosa 5.0062 versicolor 5.9363 virginica 6.588

> iris %>%+ mutate(Sepal.LW = Sepal.Length + Sepal.Width) %>%+ select(Sepal.Length, Sepal.Width, Sepal.LW) %>%+ head(., n=3) Sepal.Length Sepal.Width Sepal.LW1 5.1 3.5 8.62 4.9 3.0 7.93 4.7 3.2 7.9

dplyrで集計 パターン2

> iris %>%+ mutate(Sepal.LW = Sepal.Length + Sepal.Width) %>%+ select(Sepal.Length, Sepal.Width, Sepal.LW) %>%+ head(., n=3) Sepal.Length Sepal.Width Sepal.LW1 5.1 3.5 8.62 4.9 3.0 7.93 4.7 3.2 7.9

列を追加する

> iris %>%+ mutate(Sepal.LW = Sepal.Length + Sepal.Width) %>%+ select(Sepal.Length, Sepal.Width, Sepal.LW) %>%+ head(., n=3) Sepal.Length Sepal.Width Sepal.LW1 5.1 3.5 8.62 4.9 3.0 7.93 4.7 3.2 7.9

列を選択する

> iris %>%+ mutate(Sepal.LW = Sepal.Length + Sepal.Width) %>%+ select(Sepal.Length, Sepal.Width, Sepal.LW) %>%+ head(., n=3) Sepal.Length Sepal.Width Sepal.LW1 5.1 3.5 8.62 4.9 3.0 7.93 4.7 3.2 7.9

先頭の3行を表示

> iris %>%+ filter(Species=="setosa") %>%+ head(., n=3) Sepal.Length Sepal.Width Petal.Length Petal.Width Species1 5.1 3.5 1.4 0.2 setosa2 4.9 3.0 1.4 0.2 setosa3 4.7 3.2 1.3 0.2 setosa

dplyrで集計 パターン3

> iris %>%+ filter(Species=="setosa") %>%+ head(., n=3)

Sepal.Length Sepal.Width Petal.Length Petal.Width Species1 5.1 3.5 1.4 0.2 setosa2 4.9 3.0 1.4 0.2 setosa3 4.7 3.2 1.3 0.2 setosa

データを条件で抽出する

> iris %>%+ arrange(Sepal.Length) %>%+ head(., n=3) Sepal.Length Sepal.Width Petal.Length Petal.Width Species1 4.3 3.0 1.1 0.1 setosa2 4.4 2.9 1.4 0.2 setosa3 4.4 3.0 1.3 0.2 setosa

dplyrで集計 パターン4

> iris %>%+ arrange(Sepal.Length) %>%+ head(., n=3) Sepal.Length Sepal.Width Petal.Length Petal.Width Species1 4.3 3.0 1.1 0.1 setosa2 4.4 2.9 1.4 0.2 setosa3 4.4 3.0 1.3 0.2 setosa

並び替え

desc()で降順にする

縦に結合

> iris1 <- iris[1:50,]> iris2 <- iris[51:100,]> rbind_list(iris1, iris2) %>%+ dim(.)[1] 100 5

マージ

● 内部結合○ inner_join(df1, df2, by=c(“列名”))

● 左結合○ left_join(df1, df2, by=c(“列名”))

告知

2014年12月6日にJapan.Rを開催します。

LTを募集してます。

6人ぐらい?

top related