Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

15,582 views

Published on

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

Published in: Technology
  • Be the first to comment

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

  1. 1. R入門(dplyrでデータ加工) 第42回R勉強会@東京(#TokyoR) @gepuro
  2. 2. 自己紹介 早川 敦士 @gepuro 電気通信大学大学院 修士2年 専門:信頼性工学 言語:R言語、Python 特技:花火打ち揚げ
  3. 3. ハッカーズバーでバイトしてます http://hackersbar.net/
  4. 4. 告知 2014年12月6日に Japan.Rを開催します。
  5. 5. 分析ツール ● R○ 無料,非エンジニアでも扱いやすい言語 ● Python ○ Numpy, Scipy, Scikit-learnなどの科学計算ライブラリ が充実。エンジニアに親しまれやすい ● Julia ○ 2012年登場,玄人向け, 開発段階 ● Excel ○ ほとんどの人が使える。ピボットテーブル便利 ● など Japan.Rでパネルディスカッションを 予定してます。
  6. 6. R言語(あーるげんご)はオープンソース・ フリーソフトウェアの統計解析向けの プログラミング言語及びその開発実行環境 である。 wikipediaより
  7. 7. 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/
  8. 8. 分析作業の流れ データベース データ加工 モデリング・可視化
  9. 9. 分析作業の流れ データ取得 SQL クローリング データ加工 モデリング・可視化
  10. 10. 分析作業の流れ データベース データ加工 モデリング・可視化 マージ 型変換 集計 縦横変換 データフレーム
  11. 11. 分析作業の流れ データベース データ加工 散布図 決定木分析 重回帰分析ヒストグラム モデリング・可視化
  12. 12. 分析作業の流れ 今日はここを扱う データベース データ加工 モデリング・可視化 マージ 型変換 集計 縦横変換 データフレーム
  13. 13. 変数 > hako <- 1 > hako [1] 1 > hako * 2 [1] 2
  14. 14. 配列 > hakos <- c(1,2,3) > hakos [1] 1 2 3 > hakos + hakos [1] 2 4 6 > hakos * 10 [1] 10 20 30
  15. 15. 配列その2 > hakos [1] 1 2 3 > hakos[1] [1] 1 > hakos[2] [1] 2
  16. 16. for for(i in 1:10){ print(i) }
  17. 17. if a <- 2 if(a %% 2 == 0){ print("偶数") }else{ print("奇数") }
  18. 18. データフレーム > df <- data.frame(a=1:3, b=4:6) > df a b 1 1 4 2 2 5 3 3 6
  19. 19. データフレームその2 > df$c <- df$a + df$b > df a b c 1 1 4 5 2 2 5 7 3 3 6 9
  20. 20. データフレームその3 > df a b c 1 1 4 5 2 2 5 7 3 3 6 9 > df[1,] a b c 1 1 4 5 > df[,1] [1] 1 2 3 行にアクセス 列にアクセス
  21. 21. データ読み込み 通常の方法 > train <- read.csv("data/train.csv") 高速読み込み > library(data.table) > train <- fread("data/train.csv")
  22. 22. データの集計 データ処理のパッケージを読み込み > library(dplyr) サンプルデータの読み込み > data(iris)
  23. 23. dplyrで集計 > iris %>% + group_by(Species) %>% + summarise(SLM= mean(Sepal.Length)) Source: local data frame [3 x 2] Species SLM 1 setosa 5.006 2 versicolor 5.936 3 virginica 6.588
  24. 24. irisというデータセットを利用する > iris %>% + group_by(Species) %>% + summarise(SLM= mean(Sepal.Length)) Source: local data frame [3 x 2] Species SLM 1 setosa 5.006 2 versicolor 5.936 3 virginica 6.588
  25. 25. 左から来たものを右へ受け流す > iris %>% + group_by(Species) %>% + summarise(SLM= mean(Sepal.Length)) Source: local data frame [3 x 2] Species SLM 1 setosa 5.006 2 versicolor 5.936 3 virginica 6.588
  26. 26. Speciesという列ごとに処理する > iris %>% + group_by(Species) %>% + summarise(SLM= mean(Sepal.Length)) Source: local data frame [3 x 2] Species SLM 1 setosa 5.006 2 versicolor 5.936 3 virginica 6.588
  27. 27. 集計する > iris %>% + group_by(Species) %>% + summarise(SLM= mean(Sepal.Length)) Source: local data frame [3 x 2] Species SLM 1 setosa 5.006 2 versicolor 5.936 3 virginica 6.588
  28. 28. 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.LW 1 5.1 3.5 8.6 2 4.9 3.0 7.9 3 4.7 3.2 7.9
  29. 29. 列を追加する > iris %>% + mutate(Sepal.LW = Sepal.Length + Sepal.Width) %>% + select(Sepal.Length, Sepal.Width, Sepal.LW) %>% + head(., n=3) Sepal.Length Sepal.Width Sepal.LW 1 5.1 3.5 8.6 2 4.9 3.0 7.9 3 4.7 3.2 7.9
  30. 30. 列を選択する > iris %>% + mutate(Sepal.LW = Sepal.Length + Sepal.Width) %>% + select(Sepal.Length, Sepal.Width, Sepal.LW) %>% + head(., n=3) Sepal.Length Sepal.Width Sepal.LW 1 5.1 3.5 8.6 2 4.9 3.0 7.9 3 4.7 3.2 7.9
  31. 31. 先頭の3行を表示 > iris %>% + mutate(Sepal.LW = Sepal.Length + Sepal.Width) %>% + select(Sepal.Length, Sepal.Width, Sepal.LW) %>% + head(., n=3) Sepal.Length Sepal.Width Sepal.LW 1 5.1 3.5 8.6 2 4.9 3.0 7.9 3 4.7 3.2 7.9
  32. 32. dplyrで集計 パターン3 > iris %>% + filter(Species=="setosa") %>% + head(., n=3) Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa
  33. 33. データを条件で抽出する > iris %>% + filter(Species=="setosa") %>% + head(., n=3) Sepal.Length Sepal.Width Petal.Length Petal. Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa
  34. 34. dplyrで集計 パターン4 > iris %>% + arrange(Sepal.Length) %>% + head(., n=3) Sepal.Length Sepal.Width Petal.Length Petal. Width Species 1 4.3 3.0 1.1 0.1 setosa 2 4.4 2.9 1.4 0.2 setosa 3 4.4 3.0 1.3 0.2 setosa
  35. 35. 並び替え > iris %>% + arrange(Sepal.Length) %>% + head(., n=3) Sepal.Length Sepal.Width Petal.Length Petal. Width Species 1 4.3 3.0 1.1 0.1 setosa 2 4.4 2.9 1.4 0.2 setosa 3 4.4 3.0 1.3 0.2 setosa desc()で降順にする
  36. 36. 縦に結合 > iris1 <- iris[1:50,] > iris2 <- iris[51:100,] > rbind_list(iris1, iris2) %>% + dim(.) [1] 100 5
  37. 37. マージ ● 内部結合 ○ inner_join(df1, df2, by=c(“列名”)) ● 左結合 ○ left_join(df1, df2, by=c(“列名”))
  38. 38. 縦横の変換 reshape2 — 柔軟なデータ変形ツール http://meme.biology.tohoku.ac. jp/students/iwasaki/rstats/reshape2. html を参考
  39. 39. 告知 2014年12月6日に Japan.Rを開催します。 LTを募集してます。 6人ぐらい?

×