library(dplyr)
この記事はR Advent Calender 2014@Qiita1日目の記事「このパッケージがすごい2014」の一部です
創造神・羽鳥氏が作りしパッケージ。データフレームの操作に特化したplyrパッケージという感じです。このパッケージを利用するようになって、データ解析作業がかなり捗りました :)
ここでは、irisデータを例にして、データ解析で頻繁に行う操作に使える数を紹介します。
iris %>%
select(contains("Sepal")) %>%
filter(Sepal.Length >= 5, Sepal.Width <= 2.6) %>%
rename(sepal.length = Sepal.Length) %>%
mutate(sepal.length = round(sepal.length, 0)) %>%
arrange(Sepal.Width) %>%
head()## sepal.length Sepal.Width
## 1 5 2.0
## 2 6 2.2
## 3 6 2.2
## 4 6 2.2
## 5 6 2.3
## 6 6 2.3
iris %>%
group_by(Species) %>%
summarise_each(
funs(mean), Sepal.Length, Sepal.Width)## Source: local data frame [3 x 3]
##
## Species Sepal.Length Sepal.Width
## 1 setosa 5.006 3.428
## 2 versicolor 5.936 2.770
## 3 virginica 6.588 2.974
merge関数よりも柔軟なデータフレームの結合が行えます。by引数で結合に用いる変数を指定できます。
df1 <- data.frame(
Fruit = c("Apple", "Banana", "Melon"),
Price = c(100, 80, 360),
Count = c(3, 1, 1))
df1## Fruit Price Count
## 1 Apple 100 3
## 2 Banana 80 1
## 3 Melon 360 1
df2 <- data.frame(
Fruit = c("Apple", "Pear", "Pine"),
Size = c("L", "M", "S"))
df2## Fruit Size
## 1 Apple L
## 2 Pear M
## 3 Pine S
inner_join(df1, df2) # 2つのデータフレームに共通する項目をもとに結合## Fruit Price Count Size
## 1 Apple 100 3 L
left_join(df1, df2) # 2つのデータフレームを結合。欠損値はNAとして扱われる## Fruit Price Count Size
## 1 Apple 100 3 L
## 2 Banana 80 1
## 3 Melon 360 1
semi_join(df1, df2) # 2つのデータフレームに共通する変数のみ結合## Fruit Price Count
## 1 Apple 100 3
anti_join(df1, df2) # 結合できない値を返す## Fruit Price Count
## 1 Melon 360 1
## 2 Banana 80 1