カテゴリ値を列に展開してIDで集約　縦持ちを横持ちへ(SPSS Modeler データ加工逆引き7-2)

# カテゴリ値を列に展開してIDで集約（縦持ちを横持ちへ）

![スクリーンショット 2022-07-01 11.09.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/bad33039-47f6-2120-da77-9ef9065910af.png)

## 1.想定される利用目的

・顧客の商品購買履歴から特徴量を作成
・設備ログから異常や故障に関連する特徴量の作成

## 2.サンプルストリームのダウンロード

https://github.com/yoichiro0903n/blue/blob/main/restructure.str?raw=true

## 3.サンプルストリームの説明
![スクリーンショット 2022-07-01 13.57.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/0c61dc90-74a1-8334-a6fd-5abc229139a3.png)

a.入力するデータは以下の通りです。
![スクリーンショット 2022-07-01 13.59.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/62a6bccc-4bf4-301c-ba6c-a4afbf17efb7.png)

#### [再構成]ノードを利用する方法

b.[再構成]ノードを編集します。商品を列に展開して金額を埋め込みます。
![スクリーンショット 2022-07-01 14.06.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/6688d043-1267-fae0-c46b-64fc6a0cbb0c.png)

[プレビュー]します。3列追加されて該当セルに金額が入りました。
![スクリーンショット 2022-07-01 14.00.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/f5868f8d-be31-1aed-c2a6-7c9e4301fa01.png)

c.[レコード集計]ノードを編集します。[顧客ID]を[キー]にして列に展開した各商品の金額を合計します。
![スクリーンショット 2022-07-01 14.09.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/b14aa71b-5d0f-c923-c211-adc1bf754fb1.png)

[プレビュー]します。購入履歴がないと欠損値Nullが入ります。
![スクリーンショット 2022-07-01 14.01.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/605b91b4-4133-3e8e-4cda-63c828191ad9.png)

d.[置換]ノードを編集します。後続処理を想定してNullはゼロに置換します。商品金額の比率を求めるなどの場合に計算を成立させるためです。
![スクリーンショット 2022-07-01 14.01.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/b78f8084-3a3d-15dc-0b5c-327f345a5d8f.png)

[プレビュー]します。
![スクリーンショット 2022-07-01 14.13.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/fba7d681-b600-07e6-92e0-28401957870d.png)

#### [行列入替]ノードを利用する方法


e.[行列入替]ノードを編集します。[行列入替方法]は[レコードからフィールドへ]を選択します。
![スクリーンショット 2022-07-01 14.02.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/b3562677-09b8-0d9e-d160-234b313e1bfa.png)

[プレビュー]します。金額が実数になってしまいます。
![スクリーンショット 2022-07-01 14.02.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/68f5f98e-0957-1562-cce8-d44555aa7c7b.png)

f.関数to_integer(フィールド)で整数化するために[置換]ノードを利用します。@&#xFFF0;FIELDはワイルドカードです。３つのフィールドを同時に処理することが可能です。
![スクリーンショット 2022-07-01 14.19.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/ea9f0cce-1fdf-40c3-9b90-7a560bcc0c5f.png)

g.dと同じ設定です。

[テーブル]を実行します。
![スクリーンショット 2022-07-01 14.29.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/8d172657-d39c-7008-6aa0-7a763741d4e1.png)


#### 注意事項

サンプルストリームでは入力ノードで[商品]のデータの型を確定してあります。新たなデータを適用する際に[再構成]の[利用可能なセット値]がリストされない場合には[データ型]ノードで[値の読み込み]ボタンを押してカテゴリメンバーを確定してください。

[行列入替]ノードを利用する方法はSQLプッシュバックが効きません。SQLプッシュバックについて以下の記事が詳しく解説しています。

https://www.ibm.com/blogs/solutions/jp-ja/learn-modeler-02/

## 4.参考情報


#### [再構成]の解説記事

https://www.ibm.com/blogs/solutions/jp-ja/spssmodeler-push-node-4/

https://qiita.com/kawada2017/items/8c35ca78bfe568cb0e76

https://qiita.com/416nishimaki/items/6dcaecfc9343af0825b6

#### [行列入替]の解説記事

https://qiita.com/416nishimaki/items/c7362fdbbed9e6658689

https://qiita.com/kawada2017/items/41484aece5a62f463a95

#### SPSS Modeler ノードリファレンス目次

https://qiita.com/416nishimaki/private/503037195081d3323eee

#### SPSS Modeler 逆引きストリーム集（データ加工）

https://qiita.com/416nishimaki/private/4bf813e6cba84b2a1008