SPSS Modeler ノードリファレンス 3-10 行列入替

# 3-10 行列入替ノード[フィールド作成]
<img width="200" alt="107_89行列入替.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/474ad191-a2b9-155b-8fe8-4d695c411a17.png">


## 1.ノードの目的
データの行と列を入れ替えます。

以下のイメージを実現します。
![スクリーンショット 2022-04-11 13.49.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/8ca2fb4f-31fb-8b33-f9c7-271e381b3e7e.png)

## 2.解説動画（60秒）

<iframe width="560" height="315" src="https://www.youtube.com/embed/MjunaqdFwXI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

## 3.クイックスタート
以下のデータの行と列を入れ替えます。
＊入力データは[5.参考情報]からダウンロードできます。
![スクリーンショット 2022-04-11 14.01.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/e3dbda3f-8352-c31f-be59-6f24a685ac95.png)


[可変長ファイル]に[行列入替]、[テーブル]を接続します。
![スクリーンショット 2022-04-08 14.20.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/00724418-0d8a-acb1-9467-7d0fea06731b.png)

[行列入替]で次のように編集します。①[フィールドから読み込み]を選択しリストから[製品]を選びます。②のボタンを押すと製品名AからDがリストされます。③であらたな名称[月]を入力します。
![スクリーンショット 2022-04-08 14.29.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/e7ddc43b-d842-1e67-02a2-270952dc9d4c.png)

[テーブル]を実行します。
![スクリーンショット 2022-04-08 12.35.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/4bfb1962-48d6-e3e4-6990-e7392867faaa.png)

逆の行列変換をしてテーブルの構造を復元します。
![スクリーンショット 2022-04-11 14.03.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/6476dbff-20ab-4fdd-e9d0-3301e093d4a2.png)
[行列入替]ノードを追加して編集します。
![スクリーンショット 2022-04-11 13.55.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/a2b860de-61ef-c871-0087-96d853929c6c.png)
![スクリーンショット 2022-04-11 13.53.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/c7a6e675-4709-33eb-3a4a-5400d195d892.png)
元のテーブルに復元できました。
![スクリーンショット 2022-04-11 13.58.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/79511266-4df3-e2e8-b616-5efba1aaccf4.png)

### うまく入替できない場合のヒント
Ver18.3(2022/04現在)では欠損値（NULL)を含んだテーブルを実行すると、値が失われて表示されます。あらかじめゼロなど任意の値に置換しておく必要があります。
![スクリーンショット 2022-04-11 14.41.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/2a61c5e1-611f-7130-eabf-d950861ba99c.png)


以下の記事で詳しく説明しています。

https://www.ibm.com/blogs/solutions/jp-ja/modeler-tips-10/

## 4.Tips

#### フィールド（列）からレコード（行）へ変換(トランザクション形式)
![スクリーンショット 2022-04-11 14.07.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/906452a4-2076-d8dc-c107-25b2e80ae772.png)
クイックスタートの後続で３つのノードを接続します。
![スクリーンショット 2022-04-11 14.09.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/971b06c6-a1d9-0e89-3c43-6a3083d71d43.png)
①の設定は以下の通りです。
![スクリーンショット 2022-04-11 14.12.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/49a9c632-485f-38bf-2e7b-73ddfaf1489b.png)
②で時系列を優先にソートします。
![スクリーンショット 2022-04-11 14.13.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/1bdbfab0-1ed7-9646-4490-933dbbd491a1.png)
この時点では、整数が実数になるため、
![スクリーンショット 2022-04-11 14.14.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/4cd681f1-5294-73b7-c3a9-9c1ba14f0da9.png)
③で整数に置換します。
![スクリーンショット 2022-04-11 14.16.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/64218cf9-73eb-04d9-67d1-67dcf00716fd.png)
トランザクション形式になりました。フィールド名は[フィルター]ノードで整えます。
![スクリーンショット 2022-04-11 14.17.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/433368f3-1f4a-a28a-ff28-67f7f93a2892.png)


#### レコード（行）からフィールド（列）へ変換
![スクリーンショット 2022-04-11 14.21.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/578260ec-80ce-d460-6a3a-5f65c9605a46.png)

Tipsの後続で次のようにノードを繋げます。
![スクリーンショット 2022-04-11 14.23.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/7dcb1987-3a84-2b0f-8f93-325642c1dc28.png)
④では[値の読み込み]ボタンを押してデータ型を確定させます。＊この処理をしないと後続でエラーになります。
![スクリーンショット 2022-04-11 14.25.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/b9317b79-7806-a4e5-2137-f0560fb42672.png)
⑤の設定は以下の通りです。
![スクリーンショット 2022-04-11 14.29.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/cc86705a-a073-e0f3-ff94-fd0e9d913952.png)
この時点では値が実数になっています。![スクリーンショット 2022-04-11 14.31.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/92efb29d-eebc-231e-3682-7f570eac2fc0.png)
⑥で以下のように整数化します。整数化の関数の対象にすべてのフィールド（列）を同時に指定するワイルドカード@&#xFFF0;FIELDを利用します。
![スクリーンショット 2022-04-11 14.32.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/1f648fd8-95b0-0872-aa1d-1f7b97fbd2d7.png)
元の時系列横持ちになりました。フィールド名は[フィルター]ノードで整えます。
![スクリーンショット 2022-04-11 14.37.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/cb6b2f87-3eb5-1496-b87c-21adf07d5f8e.png)

### [再構成]ノードとの比較
ノードリファレンス3-6再構成ノードは以下のようなID付きPOSデータから顧客毎に集約する際に利用されました。
![スクリーンショット 2022-02-22 11.28.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/02a0cecf-1076-3103-857c-137635095008.png)
たとえば以下のデータの場合
＊入力データは[5.参考情報]からダウンロードできます。
![スクリーンショット 2022-02-22 10.08.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/4d035697-e453-1ff3-1a77-15b1a62e3bf4.png)
[行列入替]ノードで行の集約まで行います。
![スクリーンショット 2022-04-11 14.59.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/04385092-557c-91af-fe9a-c73a188e87e3.png)
以下のように実数になるため、整数の置換をすると[再構成]と同じノード数を要することになります。
![スクリーンショット 2022-04-11 15.01.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/4f3b2067-06f5-81dd-a371-8985911c5f24.png)

以下の記事で詳しく説明しています。

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


### 行列入替の記事
具体的な手続きを紹介している記事

https://www.ibm.com/blogs/solutions/jp-ja/modeler-tips-04/

集計表を整えるために行列入替を紹介している記事

https://www.ibm.com/blogs/solutions/jp-ja/modeler-tips-06/

フィールド（列）名を整えるために行列入替を紹介している記事

https://www.ibm.com/blogs/solutions/jp-ja/modeler-tips-11/

## 5.参考情報

#### 利用データ

右クリックでリンク先を保存してください。

行列入替用の実績データ

https://raw.githubusercontent.com/yoichiro0903n/blue/main/Sales1H.csv

Tips内の再構成との比較で利用したID付きPOSデータ

https://raw.githubusercontent.com/yoichiro0903n/blue/main/sampletranDEPT2021mac.csv

#### ノードのヘルプ

https://www.ibm.com/docs/ja/spss-modeler/18.3.0?topic=nodes-transpose-node

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

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

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

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