データサイエンス100本ノックをAlteryxで。57日目(解答)

100本ノック

このページは解答編です。

↓ネ

↓タ

↓バ

↓レ

↓防

↓止

答えと解説

設問はこちらでした。

P-057: 056の抽出結果と性別コード(gender_cd)により、新たに性別×年代の組み合わせを表すカテゴリデータを作成し、10件表示せよ。組み合わせを表すカテゴリの値は任意とする。

※サンプルの結果は、gender_cdとeraをそのままくっつけています(100の位がgender_cdで下二桁がeraです)
※新しいカテゴリデータのフィールド名はgender_eraとする

解答ワークフローは以下のようになります。

性別と年代を組み合わせて新しいカテゴリフィールドを作成する問題です。

まず、56問目の結果には性別コード(gender_cd)が含まれていないため、読み込んで結合する必要があります。

なお、出力結果は56問目の順番をそのまま使いますので、レコードIDツールを56問目のデータを読み込んだあとに追加します。その後、結合ツールで結合していきます。特定のフィールドで結合しますが、キーフィールドは「customer_id」です。

不要な項目が大量にあるので、ついでに削除しておきましょう。customer.csvファイルの中で必要なのは、gender_cdのみです。

その後、いよいよフォーミュラツールで新規フィールドを作っていきます。

オリジナルの問題では任意とされていますが、わかりやすくするため新規のフィールド名は「gender_era」とし、フィールド名の通り、gender_cdとeraをそのまま横にくっつける形としたいと思います。つまり、gender_cdが1でeraが10であれば、110となります。

この時、56問目でeraを数値型で作成しているため、そのまま結合するには文字列型にする必要があります。そのため、ToString関数を使います。あとは単純に結合するだけのため、以下のような計算式となります。

[gender_cd]+ToString([era])

実際のフォーミュラツールの設定は以下のようになります。

もちろん、数値型でいくのであれば、ToNumber関数を使って以下のような数式で実現することも可能です。

ToNumber([gender_cd])*100+[era]

いずれにしても、この後はソートツールを使い、RecordIDの昇順で並べ替えることで元の順番に戻し、不要項目を削除し、サンプリングツールなどで先頭から10件抽出すれば完了です。

まとめ

今回は、性別と年代を組み合わせて新しいカテゴリフィールドを作る問題でした。元データのcustomer.csvから作れば結合ツールなどは当然必要ありません。基本的にはそれほど難しくない問題です。

解答ワークフローダウンロード

コメント

タイトルとURLをコピーしました