Rのdplyrを使った集計(簡易版)

顔妻です。

非常に遅ればせながらdplyrについて書いていきたいと思います。実は巷の好印象とは違ってあまりよい印象を持っていませんでした。というのも、なんだかんだでDBからデータ抽出をするときはSQLだし、またいろんな方法を覚えて実施するなんて非常に面倒だと思っていました。ただ、この見解が本当に誤りだと気づいた反省も含め記載していきます。

利用するデータ

year month ShopName Sales
2016 1 渋谷店 3500000
2016 2 渋谷店 3416000
2016 3 渋谷店 3453576
2016 4 渋谷店 3387958
2016 5 渋谷店 3360854
2016 6 渋谷店 3303719

今回利用するデータは「 ShopSales_2016-2018」こちらからDLできます。上記のグラフの通り、3店舗の3年間の売り上げ推移です。

dplyrでの集計①

それではいくつか例を示していきたいと思います。まずは各店舗の3年間の売上です。「group_by」関数でまとまりを指定し「summarise」関数で集計をできるようです。

Total_Shop_Sales sales_mean
1 銀座店 362564966 10071249
2 渋谷店 166863357 4635093
3 新宿店 106563813 2960105

以下のようにSQLのウインド関数と同じこともできます。

month ShopName Sales SalesTotal cumsum_per_year ratio_per_year cumsumratio
1 2016 1 渋谷店 3500000 42591334 3500000 8.22% 8.2%
2 2016 2 渋谷店 3416000 42591334 6916000 8.02% 16.2%
3 2016 3 渋谷店 3453576 42591334 10369576 8.11% 24.3%
4 2016 4 渋谷店 3387958 42591334 13757534 7.95% 32.3%
5 2016 5 渋谷店 3360854 42591334 17118388 7.89% 40.2%
6 2016 6 渋谷店 3303720 42591334 20422108 7.76% 47.9%
7 2016 7 渋谷店 3455691 42591334 23877799 8.11% 56.1%
8 2016 8 渋谷店 3576640 42591334 27454439 8.40% 64.5%
9 2016 9 渋谷店 3673209 42591334 31127648 8.62% 73.1%
10 2016 10 渋谷店 3702595 42591334 34830243 8.69% 81.8%
11 2016 11 渋谷店 3784052 42591334 38614295 8.88% 90.7%
12 2016 12 渋谷店 3977039 42591334 42591334 9.34% 100.0%
13 2017 1 渋谷店 4144075 57389990 4144075 7.22% 7.2%
14 2017 2 渋谷店 4235244 57389990 8379319 7.38% 14.6%
15 2017 3 渋谷店 4260656 57389990 12639975 7.42% 22.0%
16 2017 4 渋谷店 4388475 57389990 17028450 7.65% 29.7%
17 2017 5 渋谷店 4599122 57389990 21627572 8.01% 37.7%
18 2017 6 渋谷店 4842876 57389990 26470448 8.44% 46.1%
19 2017 7 渋谷店 5118919 57389990 31589367 8.92% 55.0%
20 2017 8 渋谷店 5026779 57389990 36616146 8.76% 63.8%

まとめ

今回はほんとうに要点としてdplyrの使い方を記載しました。ほんとなんで今まで使ってこなかったんだろうという後悔しかないのですが、この記述だけでもSQLで苦労して書くようなウインド関数やらサブクエリーがほとんどいらなくなりそうです。これだけでもすごいのですが、集計の保守確認の観点からも数行ですむことは非常に大きいことだと思います。SQLできそうなことはほとんど出来そうなので、データがまとまったときに改めて追記か記事を増やしていきたいと思います。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA