インピュテーションツールで代入された値を取り出す方法をご紹介します
インピュテーションツールは、各フィールドでNullなどの値を何かしら埋めたい時に、特定の値もしくは統計値で代入するツールです。
統計的な作業をする際はそれなりに有用なツールかと思います(時間軸のデータの場合は、前後関係を見ながらNullを埋めたりすることが多いのでなかなか使いづらいのですが)。
そんなインピュテーションツールですが、どの項目に値を代入したか、元々のフィールドは残したまま代入したフィールドを個別に作成する、といったオプションがあります。
それぞれチェックを入れると、以下のようなアウトプットとなります。
これ、項目が多くてレコードも多いと、どの項目でどのように置換されたかを探すのは結構大変です。
ですので、代入された値だけ抜き出すワークフローを作ってみましょう。
ワークフロー概要
単一のフィールドに対して値を抜き出したいということであれば、単純にIndicatorフィールドが1になっているレコードを抜き出せば終わりです。しかし今回は、複数フィールドの代入された値を抜き出してみたいと思います。
ワークフローとしては、複数フィールドから抜き出す必要があるため、転置ツールを使っていきたいと思います。ざっくりとした順番としては以下のとおりです。
- 各レコードにIDをつける
- Indicatorのみ抽出する
- 値を抽出する
- Indicatorが1のレコード、フィールドを結合ツールを使って抜き出す
ワークフロー詳細
まず、インピュテーションツールで出力直後のデータは以下のとおりです。
1.各レコードにIDをつける
まず最初に各レコードにIDを振ります。レコードIDツールを使います。今回のようなデータであれば、F1が一意に見えますが、通常のデータだと各レコードが一意となるようなIDが付いていない可能性があるので、レコードIDを振っていきます。
2.Indicatorのみ抽出する
インピュテーションツールの「代入した値にインジケーターフィールドを含める」オプションにより生成されるインジケーターフィールドを抽出し、どのフィールドのどの値が代入された値なのかを特定していきます。
まず、転置ツールでレコードIDをキーとし、Indicatorと名前についているフィールドをデータとして縦持ちにします。
これにより、以下のようなアウトプットが得られます(先頭から10レコード)。
あとはここからValueが1のレコードを抜き出せばいいだけなのですが、値と紐付ける際にフィールド名が必要になってくるので、Nameを列分割ツールを使って「_」(アンダーバー)で分けましょう。
あとは、先程の通りValue=1のフィルタをかけて、複数の重複データが得られているので、集計ツールもしくはユニークツールで一意のデータを得ましょう。最終的には以下のようなレコードが得られていると思います。
ここで実際に使うデータは「RecordID」「Name1」のみとなります・・・。
3.値を抽出する
今度は値を抽出していきます。やり方はほぼ先程と同様です。こちらの方はデータの重複など気にせずいけるので、転置の後、列分割をかけて終わりです。
列分割ツールは先程と同じ設定なので省略します。
得られた結果は以下のとおりです(先頭10レコード)。
ここでほしい結果は、「RecordID」「Value」「Name1」となります。
4.Indicatorが1のレコード、フィールドを結合ツールを使って抜き出す
最後の仕上げとなります。まず、2で得られた結果と3で得られた結果、この2つを組み合わせて欲しい部分だけ抽出します。具体的には、結合ツールで「RecordID」「Name1」で紐付けを行います。
ここで得られた結果から、セレクトツールで必要な項目のみにすると以下のようになります(Right_ValueをImputedValueとリネームしています)。
まとめ
インピュテーションツールの結果から代入された値を抜き出すワークフローを作成しました。
膨大なレコード数、膨大なフィールド数があると手作業では大変な労力となるので、あまり手作業は現実的ではありません。
単一のフィールドに対して行うのであれば単純なフィルタでできますが、複数のフィールドを一括で行う場合は若干複雑なワークフローとなってしまいます。今回は、若干汎用的に作成してみました。これを元にマクロ化するのもそれほど難しい話ではないかと思います。
サンプルワークフローダウンロード
GetImputedValue fa-download
おまけ
インピュテーションツールと言われても、個人的にあまり使わない英語なのでピンと来ないのですが、調べると「Imputation」=「代入」とのことなので、インピュテーションツールは「代入」ツールということになります・・・。
関連記事
Alteryx Designer Version 2021.2.1.35394時点の情報となります。