Alteryxで同じ順位の人数にあわせて順位付けしたい

2018.06.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。Alteryxサポートエンジニアとして勉強中のスズです。

このシリーズでは、Alteryxを触り始めた際に出てくる「こうしたいけどやり方が分からない」「どのツールを使えばいいか分からない」といった疑問を切り口として、Alteryxの機能をご紹介していきます。

前回のブログにて順位付けの方法をご紹介しましたが、今回も順位付けのご紹介です。今回は、1位の人が2人いた場合は次の順位は3位になる、というように、同じ順位の人数にあわせて順位付けを行います。

ワークフローの概要

ワークフロー全体図

今回作成するワークフローでは、Input Dataツールにてファイルを読み込んだのち、

  1. SummarizeツールでScoreをグループ化
  2. Sortツールで順番の並べ替え
  3. Record IDツールで順位付け
  4. Joinツールでデータの結合
  5. Sortツールで順番の並べ替え
  6. Record IDツールで番号の割り当て
  7. Multi-Row Formulaツールで順位付け
  8. Selectツールで項目の整理

という処理を行います。

同じ順位の人数にあわせて順位付けしたい

表

上の表では、「Score」が同じ人が複数います。この表を処理していきます。
「5. Sortツールで順番の並べ替え」までは、前回のブログの「同じ順位を割り当てたい」と同じ処理を行っていますので、簡単に処理を見ていきます。

SummarizeツールでScoreをグループ化。

Scoreをグループ化

SortツールでScoreを降順に並べ替え。

並べ替え

Record IDツールで「Rank」という列を追加して順位付け。

順位付け

Joinツールで元のデータと処理を行ったデータを結合。

データの結合

Sortツールで「Rank」の昇順に並べ替え。

並べ替え

ここまでの処理で、「Score」が同じ場合には同じ「Rank」が割り当てられていますが、1位が2人の後に2位が続いていますので、さらに処理を追加します。
まず、[Preparation]→[Record ID]を追加します。Record IDツールでは上から順番に番号を割り当てます。

番号の割り当て

これにより、上から順番に番号を割り当てた「Number」と、「Score」が同じ場合に同じ順位が割り当てられている「Rank」の2つの項目ができました。

今度はこの2つの項目を使用して順位を作成します。
[Preparation]→[Multi-Row Formula]を追加します。Multi-Row Formulaツールでは、[Create New Field]で新しい列「New_Rank」を作成し、その列に順位を割り当てていきます。順位の割り当てにはif文を使用します。

Multi-Row Formulaの設定

[Expression]では、以下の結果になるように設定しています。

  • 「Rank」と「Number」が同じ場合は「Rank」を出力
  • 「Rank」と1行上の「Rank」が同じ場合は1行上の「New_Rank」を出力
  • それ以外は「Number」を出力

実行して結果を確認。

New_Rankの結果

「New_Rank」では1位が2人の後は3位となっており、同じ順位の人数にあわせて順位付けされていることが確認できました。

最後にSelectツールで不要な列の削除と列の並べ替えをして完成。

列の削除と並べ替え

最後に

前回に引き続き、順位付けについてご紹介しました。これからもAlteryxの機能をご紹介していきます。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400