データサイエンス100本ノック 構造化データ加工編をAlteryxでやってみる(16問目~20問目:データ抽出基礎+順位付け編)
- RSS フィードを購読する
- トピックを新着としてマーク
- トピックを既読としてマーク
- このトピックを現在のユーザーにフロートします
- ブックマーク
- 購読
- ミュート
- 印刷用ページ
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
一般社団法人データサイエンティスト協会から公開されているデータサイエンス100本ノック 構造化データ加工編のウィークリーチャレンジ方式による出題第4回目は16問目~20問目を一つにまとめてみました。データ抽出に加えて、順位付けの問題も出てきました!
- P-016: 店舗データ(store.csv)から、電話番号(tel_no)が3桁-3桁-4桁のデータを全項目表示せよ。
- P-017: 顧客データ(customer.csv)を生年月日(birth_day)で高齢順にソートし、先頭から全項目を10件表示せよ。
- P-018: 顧客データ(customer.csv)を生年月日(birth_day)で若い順にソートし、先頭から全項目を10件表示せよ。
- P-020: レシート明細データ(receipt.csv)に対し、1件あたりの売上金額(amount)が高い順にランクを付与し、先頭から10件表示せよ。項目は顧客ID(customer_id)、売上金額(amount)、付与したランクを表示させること。なお、売上金額(amount)が等しい場合でも別順位を付与すること。
※同順位の場合はcustomer_idの昇順に並べること(Alteryxオリジナル条件) - P-019: レシート明細データ(receipt.csv)に対し、1件あたりの売上金額(amount)が高い順にランクを付与し、先頭から10件表示せよ。項目は顧客ID(customer_id)、売上金額(amount)、付与したランクを表示させること。なお、売上金額(amount)が等しい場合は同一順位を付与するものとする。
※同順位の場合はcustomer_idの昇順に並べること(Alteryxオリジナル条件)
※同一順位について:2位が2つあれば次は3位ではなく4位となるものとする
※19問目、20問目は、難易度の関係で順番を入れ替えております
解いたらこちらに投稿していただければと思います。ちなみに、次回投稿は一週間後を予定しています。
solutionファイルは次回添付します。
添付ファイルは今回の出題のstartファイルと、前回のsolutionファイルです。
前回:データサイエンス100本ノック 構造化データ加工編をAlteryxでやってみる(10問目~15問目:データ抽出基礎編)
- ラベル:
- データサイエンス100本ノック
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
できました。(どうもファイルがアップロードできないので、今回も画面コピーのみでの提出です。)
16問目:解答データのフィールドが1個一致しませんでしたが、OKとしました。
19問目:R言語だとmin_rank関数で簡単にできますが、Alteryxにはないので、
レコードIDツールと複数行フォーミュラツールの組み合わせで解決しました。
(ヒントにあったタイルツールでの解法も試してみましたがわかりませんでした)
17問目
18問目
20問目
19問目
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
できました!
16問目:解答データのフィールドが1個一致しませんでしたが、OKとしました。
→ はい、問題ないと思います!もとの100本ノックにもこの項目があったのでそのままやっています。
19問目:R言語だとmin_rank関数で簡単にできますが、Alteryxにはないので、
レコードIDツールと複数行フォーミュラツールの組み合わせで解決しました。
(ヒントにあったタイルツールでの解法も試してみましたがわかりませんでした)
→タイルのTile_SequenceNumが複数行フォーミュラと同じように出てくるので、、、設定量が減るくらいの効果くらいしかないですね・・・
ランキングの取り方でもう一つメジャーなのがありますよね。1,2,3,3,3,4,4,4,みたいな感じで19問目みたいに番号が飛ばないバージョンですね。そのあたりもやっていればだいたい網羅できるのかな、と思います。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
> 1,2,3,3,3,4,4,4,みたいな感じで19問目みたいに番号が飛ばないバージョン
'dense rank' ですね。
19問目のMulti Row Formulaの式を少し変えたらできました。
THEN [Row-1:Rank]
ELSE [Row-1:Rank] + 1
ENDIF
R にはほかにもランキングについての関数があるので、Alteryxで試してみると面白いかもしれませんね。
https://dplyr.tidyverse.org/reference/ranking.html
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
実はこの問題(Dense Rankって言うんですね・・・)は、過去のウィークリーチャレンジでもありました。
元の問題よりこちらの方が実は簡単ですね、、、
