dplyrのバージョンが0.2に上がって
dplyrのバージョンが2.0に上がって少し便利になりました。
詳しくは以下のリリースノートをご覧ください。
https://github.com/hadley/dplyr/releases/tag/v0.2.0
以下の3点が大きな変更点。
- %.%が%>%に変わった
- do()が生まれ変わった
- 新しい便利関数が加わった
簡単に解説します。
%.%が%>%に変わった
%.%(chain演算子)は皆様多用されているかと思いますがいかんせんシフトキーを一度離す必要があるのでタイプしづらい。ということでmagrittrパッケージから%>%演算子をインポートしてきたとのことです。%.%はいずれ廃止するけど、すぐじゃないからまあ慌てるなとも。
do()が生まれ変わった
do()は今回のバージョンアップに伴い生まれ変わったとのことです(completely overhauled)。
正直な話、do()使ってなかったのでなにが生まれ変わったのかよくわかってないのですが、機能的にはplyrパッケージのdlply()と同等になったとのこと。
dlply()はリストで結果を返しますが、do()の場合はデータフレームで返すところが相違点。
以下のように水準ごとに回帰をかけたいとき等に使います。
library(dplyr) models <- mtcars %>% group_by(cyl) %>% do(lm=lm(mpg ~ wt, data = .)) models %>% summarise(rsq = summary(lm)$r.squared) # Source: local data frame [3 x 1] # # rsq # 1 0.5086326 # 2 0.4645102 # 3 0.4229655
ちなみに上記の例ではdo()の中でlm=lm(mpg ~ wt, data = .)というように回帰した結果にlmという名前をつけています。
こうすることで、データフレームの中にリストの形で押し込んでくれます。
models # Source: local data frame [3 x 2] # Groups: <by row> # # cyl lm # 1 4 <S3:lm> # 2 6 <S3:lm> # 3 8 <S3:lm>
名前をつけないと押し込んでくれずエラーになるので要注意。
新しい便利関数が加わった
glimpse()、sample_n()、sample_frac()、summarise_each、mutate_eachといった新しい関数が追加されました。
とくに*_eachの追加は嬉しいところです。
glimpse
dplyrを使っているとデータがtbl型になることがあります。
tbl型になるとたとえばheadでちょっとデータを見ようと思っても全ての列が表示されなくてイライラします。
そんな時はglimpseを使って下さい。
smp <- as.tbl(cbind(iris, iris)) glimpse(smp) # Variables: # $ Sepal.Length (dbl) 5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 4.6, 5.0, 4.4, 4.9, 5.4, 4.8, 4.8, 4.3, 5.8, 5.7, 5.4, 5... # $ Sepal.Width (dbl) 3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4, 3.4, 2.9, 3.1, 3.7, 3.4, 3.0, 3.0, 4.0, 4.4, 3.9, 3... # $ Petal.Length (dbl) 1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 1.5, 1.5, 1.6, 1.4, 1.1, 1.2, 1.5, 1.3, 1... # $ Petal.Width (dbl) 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3, 0.2, 0.2, 0.1, 0.2, 0.2, 0.1, 0.1, 0.2, 0.4, 0.4, 0... # $ Species (fctr) setosa, setosa, setosa, setosa, setosa, setosa, setosa, setosa, setosa, setosa, setos... # $ Sepal.Length (dbl) 5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 4.6, 5.0, 4.4, 4.9, 5.4, 4.8, 4.8, 4.3, 5.8, 5.7, 5.4, 5... # $ Sepal.Width (dbl) 3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4, 3.4, 2.9, 3.1, 3.7, 3.4, 3.0, 3.0, 4.0, 4.4, 3.9, 3... # $ Petal.Length (dbl) 1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 1.5, 1.5, 1.6, 1.4, 1.1, 1.2, 1.5, 1.3, 1... # $ Petal.Width (dbl) 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3, 0.2, 0.2, 0.1, 0.2, 0.2, 0.1, 0.1, 0.2, 0.4, 0.4, 0... # $ Species (fctr) setosa, setosa, setosa, setosa, setosa, setosa, setosa, setosa, setosa, setosa, setos...
sample_n / sample_frac
いずれもサンプリングのための関数です。
sample_nはサンプルサイズを行数で指定、sample_fracは割合で指定します。
sample_n(mtcars, 10) sample_frac(mtcars, 0.1)
summarise_each / mutate_each
これが一番嬉しい追加かも。以下のブログ記事参照。
http://d.hatena.ne.jp/sfchaos/20140514/p1
他にもマイナーチェンジは色々とあるのでリリースノートをご覧ください。
https://github.com/hadley/dplyr/releases/tag/v0.2.0