【AlteryxTips】インピュテーションツールで代入された値を取り出す

 

インピュテーションツールで代入された値を取り出す方法をご紹介します

 

インピュテーションツールは、各フィールドでNullなどの値を何かしら埋めたい時に、特定の値もしくは統計値で代入するツールです。

統計的な作業をする際はそれなりに有用なツールかと思います(時間軸のデータの場合は、前後関係を見ながらNullを埋めたりすることが多いのでなかなか使いづらいのですが)。

そんなインピュテーションツールですが、どの項目に値を代入したか、元々のフィールドは残したまま代入したフィールドを個別に作成する、といったオプションがあります。

インピュテーションツール設定

それぞれチェックを入れると、以下のようなアウトプットとなります。

インピュテーションツールの結果

これ、項目が多くてレコードも多いと、どの項目でどのように置換されたかを探すのは結構大変です。

ですので、代入された値だけ抜き出すワークフローを作ってみましょう。

 

ワークフロー概要

単一のフィールドに対して値を抜き出したいということであれば、単純にIndicatorフィールドが1になっているレコードを抜き出せば終わりです。しかし今回は、複数フィールドの代入された値を抜き出してみたいと思います。

ワークフローとしては、複数フィールドから抜き出す必要があるため、転置ツールを使っていきたいと思います。ざっくりとした順番としては以下のとおりです。

  1. 各レコードにIDをつける
  2. Indicatorのみ抽出する
  3. 値を抽出する
  4. Indicatorが1のレコード、フィールドを結合ツールを使って抜き出す

 

ワークフロー

ワークフロー詳細

まず、インピュテーションツールで出力直後のデータは以下のとおりです。

インピュテーションツールの結果

1.各レコードにIDをつける

1レコードID付与

まず最初に各レコードにIDを振ります。レコードIDツールを使います。今回のようなデータであれば、F1が一意に見えますが、通常のデータだと各レコードが一意となるようなIDが付いていない可能性があるので、レコードIDを振っていきます。

 

2.Indicatorのみ抽出する

2Indicatorのみ抽出

インピュテーションツールの「代入した値にインジケーターフィールドを含める」オプションにより生成されるインジケーターフィールドを抽出し、どのフィールドのどの値が代入された値なのかを特定していきます。

まず、転置ツールでレコードIDをキーとし、Indicatorと名前についているフィールドをデータとして縦持ちにします。

転置ツール設定

これにより、以下のようなアウトプットが得られます(先頭から10レコード)。

転置ツールの出力結果

あとはここからValueが1のレコードを抜き出せばいいだけなのですが、値と紐付ける際にフィールド名が必要になってくるので、Nameを列分割ツールを使って「_」(アンダーバー)で分けましょう。

列分割ツール設定

あとは、先程の通りValue=1のフィルタをかけて、複数の重複データが得られているので、集計ツールもしくはユニークツールで一意のデータを得ましょう。最終的には以下のようなレコードが得られていると思います。

出力結果

ここで実際に使うデータは「RecordID」「Name1」のみとなります・・・。

 

3.値を抽出する

3値を抽出

今度は値を抽出していきます。やり方はほぼ先程と同様です。こちらの方はデータの重複など気にせずいけるので、転置の後、列分割をかけて終わりです。

転置ツール設定

列分割ツールは先程と同じ設定なので省略します。

得られた結果は以下のとおりです(先頭10レコード)。

結果

ここでほしい結果は、「RecordID」「Value」「Name1」となります。

 

4.Indicatorが1のレコード、フィールドを結合ツールを使って抜き出す

4結果抽出

最後の仕上げとなります。まず、2で得られた結果と3で得られた結果、この2つを組み合わせて欲しい部分だけ抽出します。具体的には、結合ツールで「RecordID」「Name1」で紐付けを行います。

結合ツール設定

ここで得られた結果から、セレクトツールで必要な項目のみにすると以下のようになります(Right_ValueをImputedValueとリネームしています)。

最終結果

まとめ

インピュテーションツールの結果から代入された値を抜き出すワークフローを作成しました。

膨大なレコード数、膨大なフィールド数があると手作業では大変な労力となるので、あまり手作業は現実的ではありません。

単一のフィールドに対して行うのであれば単純なフィルタでできますが、複数のフィールドを一括で行う場合は若干複雑なワークフローとなってしまいます。今回は、若干汎用的に作成してみました。これを元にマクロ化するのもそれほど難しい話ではないかと思います。

 

サンプルワークフローダウンロード

GetImputedValue

 

おまけ

インピュテーションツールと言われても、個人的にあまり使わない英語なのでピンと来ないのですが、調べると「Imputation」=「代入」とのことなので、インピュテーションツールは「代入」ツールということになります・・・。

関連記事

 

 

Alteryx Designer Version 2021.2.1.35394時点の情報となります。

Alteryxの導入はぜひKCMEで!

セルフサービスデータ分析ツール「Alteryx」は4週間無償トライアルが可能です。

製品に対する操作方法、技術的な質問などは導入前・導入後に関わらずメールにてお答えします。また、Alteryxを用いた環境構築、開発、ヘルプデスク対応、ハンズオン、トレーニング、ワークフロー作成なども承りますので、お気軽にご相談ください。

おすすめの記事