SPSS Modelerで、横持ちデータを縦持ちデータに変換することは行列入替ノードを使って行うことができます。
■サンプル
サンプル・ストリームは以下に置きました。
https://github.com/hkwd/spsssample/raw/master/201113%E8%A1%8C%E5%88%97%E5%85%A5%E6%9B%BF%E3%83%8E%E3%83%BC%E3%83%89/201113%E8%A1%8C%E5%88%97%E5%85%A5%E6%9B%BF%E3%83%8E%E3%83%BC%E3%83%89.str
行列入替ノード
以下のような変換を行います。
カードIDで1レコードのデータを、行列入替ノードを使って、購入価格、年収、年齢の各列が3レコードになるデータに変換します。
- 行列入替方法を「フィールドからレコードへ」に設定します。
- 索引にデータを一意に識別できる列を設定します。また、縦変換したくない列も合わせて設定します。
- 値にレコード化したい列を指定します。
結果をユニークIDでソートした結果が以下です。
カードID10150のデータが3レコードに展開されています。
列名は汎用的なvariableとvalueという列名で自動的に作成されます。
なお、valueのデータ型はそろえられてしまうので、文字列型と数値型は混在ができません。「選択したすべての値フィールドのストレージ タイプは同じでなければなりません (数値または文字列)」というエラーになります。
もし混在させたい場合はあらかじめ数値型を文字列型に変換して、文字として扱ってください。
なお、この縦持ち変換はSQLプッシュバックが効かないことには注意が必要です。
参考
-
行列入替ノードのオプションの設定
-
逆に縦持ちデータを横持ちデータに変換する例は以下にあります。
-
SPSS Modelerの再構成ノードをPythonで書き換える。購入商品カテゴリごとの集計 - Qiita
■テスト環境
Modeler 18.2.2
Windows 10 64bit