ID毎に各列に含まれる種類数をカウントする(SPSS Modeler データ加工逆引き7-9)

# ID毎に各列に含まれる種類数をカウント（重複ノード）

![スクリーンショット 2022-08-11 9.27.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/a1144788-c989-322e-272e-b2233d2b953d.png)

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

・読み込んだデータの概要確認
・ID毎の特徴量作成


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

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

## 3.サンプルストリームの説明

![スクリーンショット 2022-08-11 9.30.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/ed83c916-7cd6-925e-ea7f-d7c06df5b8e9.png)

a.入力するデータは以下の通りです。
![スクリーンショット 2022-08-03 14.38.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/e8485294-d30e-888f-df3c-7cbbb28e5866.png)

後続処理のために[データ型]タブで連続型を順序型に尺度の変更をしてから[値の読み込み]ボタンで確定します。
![スクリーンショット 2022-08-11 9.32.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/19d092dd-3724-c959-6e1b-6e63544041cf.png)

#### 全てのレコード（行）で各フィールド（列）に含まれるユニークな種類数をカウントする

b.[データ検査]ノードを実行します。全てのレコードでの確認はこの方法が便利です。
![スクリーンショット 2022-08-11 9.33.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/5f0e9cc0-1933-4aa8-a41b-aa342e859543.png)

#### ID毎に各フィールド（列）に含まれるユニークな種類数をカウントする

c.[重複]ノードを編集します。[グループ化のキーフィールド]を[顧客]にします。
![スクリーンショット 2022-08-11 9.34.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/9ee11593-2846-eb38-6e98-a078cefa8bca.png)

[複合]タブを編集します。
![スクリーンショット 2022-08-11 9.35.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/6264ed37-02ef-dd8a-9f47-103f088d6219.png)

[カスタム]のダイアログで[区切り文字を使用]にチェックして[下線]を選択します。

![スクリーンショット 2022-08-11 9.37.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/e28f458c-9d67-2e14-944a-3b9ddfc9a51a.png)

[プレビュー]します。ID毎の商品、数量、購買日のユニークな種類数が1つのセルに下線で結合されて収まっています。
![スクリーンショット 2022-08-11 9.38.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/6f6cfb85-a684-0c34-2225-29b10c528a86.png)

d.[データ検査]ノードを実行します。関数count_substring(@&#xFFF0;FIELD,"_")で下線の数を数えます。その値に1を加えるとユニークな種類数になります。@&#xFFF0;FIELDはワイルドカードで同時に複数のフィールドを同時に対象にできます。
![スクリーンショット 2022-08-11 9.38.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/0eb8d85b-dad2-3bfe-df98-4c86127cbcf2.png)

[プレビュー]します。
![スクリーンショット 2022-08-11 9.39.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/16da35c5-2669-0a76-92d3-5e051230f708.png)


#### 各列を分割して処理した結果をレコード結合する方法

e.[レコード集計]ノードを編集します。顧客と商品の組み合わせの重複を排除します。
![スクリーンショット 2022-08-03 15.19.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/ab8358f0-bba6-e3f8-fe4a-b6fb4f546f89.png)

[プレビュー]します。
![スクリーンショット 2022-08-03 16.18.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/9f918b30-ffe2-275b-9fb7-aff1742cafd4.png)

f.[レコード集計]ノードを編集します。[顧客]で集約しレコード数を[商品]にしています。
![スクリーンショット 2022-08-03 15.19.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/809b142b-cbda-086f-8776-3c1f600b9fb3.png)

[プレビュー]します。顧客毎の[商品]の種類数が得られました。
![スクリーンショット 2022-08-03 16.18.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/d1ec9ae0-e00a-8283-3366-fa2e4ac44c7a.png)

商品と同じことを[数量]と[購買日]でも行います。

g.[レコード結合]ノードを編集します。[キーフィールド]を[顧客]に内部結合します。
![スクリーンショット 2022-08-03 15.20.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/79e62abf-0b81-7b5d-0399-a337f8a2f5f0.png)

[テーブル]ノードを実行します。
![スクリーンショット 2022-08-03 15.20.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/7ffc72c4-4265-1531-0cb3-cbd30ea8fcb2.png)

#### 注意事項

重複ノードを利用する方法はセルに文字列を集めるため、文字数の長さや種類の数に注意してください。
含まれる値に下線（_）が含まれる場合には前処理でハイフンへの置き換え（関数はreplace）を行うか区切り文字の変更を検討してください。

250以上の種類が想定される場合には、あらかじめストリームのプロパティで設定します。

https://qiita.com/416nishimaki/items/bcaec1cd8e455c3f68a9#%E3%83%95%E3%83%A9%E3%82%B0%E5%8C%96%E3%81%99%E3%82%8B%E3%81%B9%E3%81%8D%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84

## 4.参考情報

#### [重複]ノードを扱った記事

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

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

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

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

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