4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Modelerスクリプトでループ処理を実行する(SPSS Modeler データ加工逆引き9-14)

Last updated at Posted at 2023-04-12

カテゴリ毎にテーブルを出し分ける(Modelerスクリプトによるループ処理)

スクリーンショット 2023-04-03 14.33.39.png

1.想定される利用目的

・同じような処理を効率的に実施するためPythonスクリプトを利用してループさせる

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

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

スクリーンショット 2023-04-03 14.34.34.png

a.入力するデータは以下の通りです。

スクリーンショット 2023-03-28 11.03.15.png

カテゴリの種類の数をループさせるためにインデックスを付番する

b.[レコード]ノードを編集します。
スクリーンショット 2023-04-03 14.46.00.png

c.[ソート]ノードを編集してABCの順に並び替えます。
スクリーンショット 2023-04-03 14.46.43.png

d.[フィールド作成]ノードを編集します。関数@￰INDEXで付番します。
スクリーンショット 2023-04-03 14.47.04.png

[プレビュー]します。
スクリーンショット 2023-04-03 14.48.01.png

e.[レコード結合]ノードを編集します。
スクリーンショット 2023-04-03 14.48.32.png

[プレビュー]します。これがループのための対象データになります。
スクリーンショット 2023-04-03 14.50.41.png

f.[条件抽出]ノードを配置します。編集はせず設定はブランクにしておきます。
スクリーンショット 2023-04-03 14.51.51.png

Modelerスクリプトでループを設定する

スクリーンショット 2023-04-03 15.21.17.png

Pythonモードで以下のようにスクリプトを記述します。[このスクリプトを実行]を選択します。
スクリーンショット 2023-04-03 14.54.21.png

pythonスクリプト
stream = modeler.script.stream()

cate= stream.findByType("select",None)

num = 1
while num <= 3 :
    cate.setPropertyValue("condition",u"index = "+ str(num) )
    num = num + 1
    stream.findByType("table",None).run(None)	

ループ処理を実行する

画面の▶︎ボタンを押すと3つのテーブルが連続して表示されます。

スクリーンショット 2023-04-03 14.56.37.png

注意事項

ModelerでPythonスクリプトを用いるとき、日本語Shift-JISのノードラベルや文字列を指定する場合はご注意下さい。「u”レコード集計”」のように「u」を先頭につける必要があります。

4.参考情報

Modelerスクリプトについて解説した記事

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

SPSS Modeler 逆引きストリーム集(データ加工)

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?