顔妻です。
非常に遅ればせながら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できそうなことはほとんど出来そうなので、データがまとまったときに改めて追記か記事を増やしていきたいと思います。