tokyor39 yokkuns

48
2014/5/31 file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 1/48 R [ ] 14 15 (@yokkuns)

Upload: yohei-sato

Post on 31-May-2015

1.640 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 1/48

データ・ハンドリングRで学ぶデータマイニングⅠ データ解析[編] 14~15章

里 洋平 (@yokkuns)

Page 2: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 2/48

AGENDA1. 自己紹介

2. データフレームの基本操作

3. フィルタリング

4. 並び替え

5. 列の追加

6. データフレームの結合

7. ピボットテーブル (reshape2)

8. 集約処理 (dplyr)

2/49

Page 3: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 3/48

自己紹介

3/49

Page 4: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 4/48

4/49

Page 5: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 5/48

5/49

Page 6: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 6/48

データフレームの基本操作

6/49

Page 7: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 7/48

データフレームとはRでデータ分析するときに最も良く使うデータ構造

行列との違い·

データフレームの各行・各列はラベル(名前)を持っており、ラベルを指定してデータを取り

出せる

行列はすべての要素が同じ型だがデータフレームはバラバラのデータ型を持てる

-

-

7/49

Page 8: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 8/48

前からN行だけ見たいhead関数デフォルトは前から6行

head(airquality)

## Ozone Solar.R Wind Temp Month Day## 1 41 190 7.4 67 5 1## 2 36 118 8.0 72 5 2## 3 12 149 12.6 74 5 3## 4 18 313 11.5 62 5 4## 5 NA NA 14.3 56 5 5## 6 28 NA 14.9 66 5 6

8/49

Page 9: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 9/48

前からN行だけ見たいhead関数第2引数を指定すると、前から指定した行までを取得出来る

head(airquality, 3)

## Ozone Solar.R Wind Temp Month Day## 1 41 190 7.4 67 5 1## 2 36 118 8.0 72 5 2## 3 12 149 12.6 74 5 3

9/49

Page 10: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 10/48

後からN行だけ見たいtail関数デフォルトは後から6行

tail(airquality)

## Ozone Solar.R Wind Temp Month Day## 148 14 20 16.6 63 9 25## 149 30 193 6.9 70 9 26## 150 NA 145 13.2 77 9 27## 151 14 191 14.3 75 9 28## 152 18 131 8.0 76 9 29## 153 20 223 11.5 68 9 30

10/49

Page 11: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 11/48

後からN行だけ見たいtail関数第2引数を指定すると、後から指定した行数を取得出来る

tail(airquality, 3)

## Ozone Solar.R Wind Temp Month Day## 151 14 191 14.3 75 9 28## 152 18 131 8.0 76 9 29## 153 20 223 11.5 68 9 30

11/49

Page 12: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 12/48

特定の行だけ見たい

正整数の添字ベクトルで指定する

airquality[c(1, 2, 5, 100, 120), ]

## Ozone Solar.R Wind Temp Month Day## 1 41 190 7.4 67 5 1## 2 36 118 8.0 72 5 2## 5 NA NA 14.3 56 5 5## 100 89 229 10.3 90 8 8## 120 76 203 9.7 97 8 28

12/49

Page 13: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 13/48

特定の列だけ見たい

正整数の添字ベクトルで指定する

head(airquality[, c(2, 4)])

## Solar.R Temp## 1 190 67## 2 118 72## 3 149 74## 4 313 62## 5 NA 56## 6 NA 66

13/49

Page 14: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 14/48

特定の列以外を見たい

負整数の添字ベクトルで指定する

head(airquality[, -c(2, 4)])

## Ozone Wind Month Day## 1 41 7.4 5 1## 2 36 8.0 5 2## 3 12 12.6 5 3## 4 18 11.5 5 4## 5 NA 14.3 5 5## 6 28 14.9 5 6

14/49

Page 15: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 15/48

特定の列だけ見たい

列名ベクトルで指定する

head(airquality[, c("Ozone", "Temp", "Day")])

## Ozone Temp Day## 1 41 67 1## 2 36 72 2## 3 12 74 3## 4 18 62 4## 5 NA 56 5## 6 28 66 6

15/49

Page 16: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 16/48

フィルタリング

16/49

Page 17: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 17/48

欠測値のない行が欲しい

na.omit関数

# NAが存在するデータairquality[4:6, ]

## Ozone Solar.R Wind Temp Month Day## 4 18 313 11.5 62 5 4## 5 NA NA 14.3 56 5 5## 6 28 NA 14.9 66 5 6

# NAを除外na.omit(airquality[4:6, ])

## Ozone Solar.R Wind Temp Month Day## 4 18 313 11.5 62 5 4

17/49

Page 18: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 18/48

条件にマッチした行が欲しい

論理型ベクトルで指定する

# 条件の論理型ベクトルの作成idx <- airquality$Month == 5head(idx)

## [1] TRUE TRUE TRUE TRUE TRUE TRUE

# 論理型ベクトルで指定tail(airquality[idx, ], 3)

## Ozone Solar.R Wind Temp Month Day## 29 45 252 14.9 81 5 29## 30 115 223 5.7 79 5 30## 31 37 279 7.4 76 5 31

18/49

Page 19: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 19/48

並び替え

19/49

Page 20: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 20/48

並び替えた時の値ベクトルが欲しい

sort関数

# 昇順head(sort(airquality$Ozone), 20)

## [1] 1 4 6 7 7 7 8 9 9 9 10 11 11 11 12 12 13 13 13 13

# 降順head(sort(airquality$Ozone, decreasing = T), 20)

## [1] 168 135 122 118 115 110 108 97 97 96 91 89 85 85 84 82 80## [18] 79 78 78

20/49

Page 21: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 21/48

並び替えた時の添字ベクトルが欲しい

order関数

# 昇順head(order(airquality$Ozone))

## [1] 21 23 18 11 76 147

head(airquality[order(airquality$Ozone), ])

## Ozone Solar.R Wind Temp Month Day## 21 1 8 9.7 59 5 21## 23 4 25 9.7 61 5 23## 18 6 78 18.4 57 5 18## 11 7 NA 6.9 74 5 11## 76 7 48 14.3 80 7 15## 147 7 49 10.3 69 9 24

21/49

Page 22: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 22/48

並び替えた時の添字ベクトルが欲しい

order関数

# 降順head(order(airquality$Ozone, decreasing = T))

## [1] 117 62 99 121 30 101

head(airquality[order(airquality$Ozone, decreasing = T), ])

## Ozone Solar.R Wind Temp Month Day## 117 168 238 3.4 81 8 25## 62 135 269 4.1 84 7 1## 99 122 255 4.0 89 8 7## 121 118 225 2.3 94 8 29## 30 115 223 5.7 79 5 30## 101 110 207 8.0 90 8 9

22/49

Page 23: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 23/48

特定の列で並び替えたデータフレームが欲しい

dplyr::arrange関数

# 昇順head(dplyr::arrange(airquality, Ozone))

## Ozone Solar.R Wind Temp Month Day## 1 1 8 9.7 59 5 21## 2 4 25 9.7 61 5 23## 3 6 78 18.4 57 5 18## 4 7 NA 6.9 74 5 11## 5 7 48 14.3 80 7 15## 6 7 49 10.3 69 9 24

23/49

Page 24: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 24/48

特定の列で並び替えたデータフレームが欲しい

dplyr::arrange関数

# 降順head(dplyr::arrange(airquality, desc(Ozone)))

## Ozone Solar.R Wind Temp Month Day## 1 168 238 3.4 81 8 25## 2 135 269 4.1 84 7 1## 3 122 255 4.0 89 8 7## 4 118 225 2.3 94 8 29## 5 115 223 5.7 79 5 30## 6 110 207 8.0 90 8 9

24/49

Page 25: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 25/48

特定の列で並び替えたデータフレームが欲しい

dplyr::arrange関数

# 複数の列で並び替えhead(dplyr::arrange(airquality, Month, desc(Temp)))

## Ozone Solar.R Wind Temp Month Day## 1 45 252 14.9 81 5 29## 2 115 223 5.7 79 5 30## 3 37 279 7.4 76 5 31## 4 12 149 12.6 74 5 3## 5 7 NA 6.9 74 5 11## 6 11 320 16.6 73 5 22

25/49

Page 26: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 26/48

列の追加

26/49

Page 27: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 27/48

通常の代入で追加する

aq <- airquality

aq$newCol1 <- "new1"head(aq)

## Ozone Solar.R Wind Temp Month Day newCol1## 1 41 190 7.4 67 5 1 new1## 2 36 118 8.0 72 5 2 new1## 3 12 149 12.6 74 5 3 new1## 4 18 313 11.5 62 5 4 new1## 5 NA NA 14.3 56 5 5 new1## 6 28 NA 14.9 66 5 6 new1

27/49

Page 28: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 28/48

関数で追加する

transform関数

aq <- transform(aq, newCol2 = "new2")head(aq)

## Ozone Solar.R Wind Temp Month Day newCol1 newCol2## 1 41 190 7.4 67 5 1 new1 new2## 2 36 118 8.0 72 5 2 new1 new2## 3 12 149 12.6 74 5 3 new1 new2## 4 18 313 11.5 62 5 4 new1 new2## 5 NA NA 14.3 56 5 5 new1 new2## 6 28 NA 14.9 66 5 6 new1 new2

28/49

Page 29: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 29/48

関数で追加する

dplyr::mutate関数

aq <- dplyr::mutate(aq, newCol3 = "new3")head(aq)

## Ozone Solar.R Wind Temp Month Day newCol1 newCol2 newCol3## 1 41 190 7.4 67 5 1 new1 new2 new3## 2 36 118 8.0 72 5 2 new1 new2 new3## 3 12 149 12.6 74 5 3 new1 new2 new3## 4 18 313 11.5 62 5 4 new1 new2 new3## 5 NA NA 14.3 56 5 5 new1 new2 new3## 6 28 NA 14.9 66 5 6 new1 new2 new3

29/49

Page 30: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 30/48

データフレームの結合

30/49

Page 31: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 31/48

列が同じデータフレームを縦に結合するrbind関数

aq1 <- head(airquality, 3)aq2 <- tail(airquality, 3)

aq12 <- rbind(aq1, aq2)aq12

## Ozone Solar.R Wind Temp Month Day## 1 41 190 7.4 67 5 1## 2 36 118 8.0 72 5 2## 3 12 149 12.6 74 5 3## 151 14 191 14.3 75 9 28## 152 18 131 8.0 76 9 29## 153 20 223 11.5 68 9 30

31/49

Page 32: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 32/48

列が異なるデータフレームを縦に結合するplyr::rbind_fill関数

aq1 <- head(airquality, 3)[, 1:3]aq2 <- tail(airquality, 3)[, 1:4]

aq12 <- plyr::rbind.fill(aq1, aq2)aq12

## Ozone Solar.R Wind Temp## 1 41 190 7.4 NA## 2 36 118 8.0 NA## 3 12 149 12.6 NA## 4 14 191 14.3 75## 5 18 131 8.0 76## 6 20 223 11.5 68

32/49

Page 33: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 33/48

横に結合する

aq1 <- airquality[, 1:3]aq2 <- airquality[, 4:6]

aq12 <- cbind(aq1, aq2)head(aq12)

## Ozone Solar.R Wind Temp Month Day## 1 41 190 7.4 67 5 1## 2 36 118 8.0 72 5 2## 3 12 149 12.6 74 5 3## 4 18 313 11.5 62 5 4## 5 NA NA 14.3 56 5 5## 6 28 NA 14.9 66 5 6

33/49

Page 34: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 34/48

特定の列をキーにして結合するmerge関数

a <- data.frame(id = 1:10, id2 = 11:20, x = 101:110)b <- data.frame(id = c(1, 3, 5, 11), id2 = c(11, 17, 15, 24), y = c(100, 200, 150, 400))

# 結合出来たレコードのみab <- merge(a, b, by = "id")ab

## id id2.x x id2.y y## 1 1 11 101 11 100## 2 3 13 103 17 200## 3 5 15 105 15 150

34/49

Page 35: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 35/48

特定の列をキーにして結合するmerge関数

# aは全部残すab <- merge(a, b, by = "id", all.x = T)ab

## id id2.x x id2.y y## 1 1 11 101 11 100## 2 2 12 102 NA NA## 3 3 13 103 17 200## 4 4 14 104 NA NA## 5 5 15 105 15 150## 6 6 16 106 NA NA## 7 7 17 107 NA NA## 8 8 18 108 NA NA## 9 9 19 109 NA NA## 10 10 20 110 NA NA

35/49

Page 36: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 36/48

特定の列をキーにして結合するmerge関数

# bは全部残すab <- merge(a, b, by = "id", all.y = T)ab

## id id2.x x id2.y y## 1 1 11 101 11 100## 2 3 13 103 17 200## 3 5 15 105 15 150## 4 11 NA NA 24 400

36/49

Page 37: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 37/48

特定の列をキーにして結合するmerge関数

# a、b両方とも全部残すab <- merge(a, b, by = "id", all = T)ab

## id id2.x x id2.y y## 1 1 11 101 11 100## 2 2 12 102 NA NA## 3 3 13 103 17 200## 4 4 14 104 NA NA## 5 5 15 105 15 150## 6 6 16 106 NA NA## 7 7 17 107 NA NA## 8 8 18 108 NA NA## 9 9 19 109 NA NA## 10 10 20 110 NA NA## 11 11 NA NA 24 400

37/49

Page 38: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 38/48

複数の列をキーにして結合するmerge関数

# 複数の列をキーにして結合するab <- merge(a, b, by = c("id", "id2"))ab

## id id2 x y## 1 1 11 101 100## 2 5 15 105 150

38/49

Page 39: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 39/48

ピボットテーブル (reshape2)

39/49

Page 40: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 40/48

縦長のデータフレームを作るreshape2パッケージ melt関数

library(reshape2)

aq.melt <- melt(airquality, id.vars = c("Month", "Day"))aq.melt[seq(100, 500, 100), ]

## Month Day variable value## 100 8 8 Ozone 89.0## 200 6 16 Solar.R 191.0## 300 9 24 Solar.R 49.0## 400 8 2 Wind 13.8## 500 6 10 Temp 87.0

40/49

Page 41: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 41/48

横長のデータフレームを作るreshape2パッケージ dcast関数

# 月ごとの平均aq.cast <- dcast(aq.melt, Month ~ variable, mean, na.rm = T)head(aq.cast)

## Month Ozone Solar.R Wind Temp## 1 5 23.62 181.3 11.623 65.55## 2 6 29.44 190.2 10.267 79.10## 3 7 59.12 216.5 8.942 83.90## 4 8 59.96 171.9 8.794 83.97## 5 9 31.45 167.4 10.180 76.90

41/49

Page 42: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 42/48

横長のデータフレームを作るreshape2パッケージ dcast関数

aq.cast <- dcast(aq.melt, Month + Day ~ variable, mean, na.rm = T)head(aq.cast)

## Month Day Ozone Solar.R Wind Temp## 1 5 1 41 190 7.4 67## 2 5 2 36 118 8.0 72## 3 5 3 12 149 12.6 74## 4 5 4 18 313 11.5 62## 5 5 5 NaN NaN 14.3 56## 6 5 6 28 NaN 14.9 66

42/49

Page 43: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 43/48

横長のデータフレームを作るreshape2パッケージ dcast関数

aq.cast <- dcast(aq.melt, Day ~ Month + variable, mean, na.rm = T)head(aq.cast[, 1:8])

## Day 5_Ozone 5_Solar.R 5_Wind 5_Temp 6_Ozone 6_Solar.R 6_Wind## 1 1 41 190 7.4 67 NaN 286 8.6## 2 2 36 118 8.0 72 NaN 287 9.7## 3 3 12 149 12.6 74 NaN 242 16.1## 4 4 18 313 11.5 62 NaN 186 9.2## 5 5 NaN NaN 14.3 56 NaN 220 8.6## 6 6 28 NaN 14.9 66 NaN 264 14.3

43/49

Page 44: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 44/48

集約処理 (dplyr)library(dplyr)

# 使用するデータhead(mtcars)

## mpg cyl disp hp drat wt qsec vs am gear carb## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1

44/49

Page 45: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 45/48

グループごとに集約処理したデータフレームを作る

group_by + summarise

mtcars %.% group_by(am) %.% summarise(mpg.mean = mean(mpg))

## Source: local data frame [2 x 2]## ## am mpg.mean## 1 0 17.15## 2 1 24.39

45/49

Page 46: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 46/48

グループごとに集約処理したデータフレームを作る

group_by + summarise

mtcars %.% group_by(am) %.% summarise(mpg.mean = mean(mpg), count = length(mpg), mpg.max = max(mpg), cyl.mpg.max = cyl[which.max(mpg)])

## Source: local data frame [2 x 5]## ## am mpg.mean count mpg.max cyl.mpg.max## 1 0 17.15 19 24.4 4## 2 1 24.39 13 33.9 4

46/49

Page 47: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 47/48

グループごとに集約処理した値を新たな列として追加する

group_by + mutate

mtcars %.% group_by(am, vs) %.% mutate(mpg.mean = mean(mpg), mpg.sd = sd(mpg)) %.% as.data.frame() %.% head()

## mpg cyl disp hp drat wt qsec vs am gear carb mpg.mean mpg.sd## 1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 19.75 4.009## 2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 19.75 4.009## 3 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 28.37 4.758## 4 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 20.74 2.471## 5 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 15.05 2.774## 6 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 20.74 2.471

47/49

Page 48: Tokyor39 yokkuns

2014/5/31 データ・ハンドリング

file:///Users/yokkuns/github/TokyoR/TokyoR39/yokkuns/index.html#49 48/48

49/49