IBM SPSS Modeler(Clementine):for ... endfor 使い方 1 [データサイエンス、統計モデル]
IBM SPSS Modeler(旧称:Clementine)を使って、集計を繰り返していくと、元のフィールド名がやたら長いものになってしまう。
そこで、フィルタノードを使いフィールド名を整形するのだが…
フィールド数が少ない場合は、手で修正できるのだが、フィールド数が多くなってくると、手で修正するのも面倒になる。
そこで、スクリプトを使って、簡単に修正するスクリプトを調べた。
基本は、"for ... endfor"を理解するだけの簡単なスクリプトなのだが、せっかくなので、for ... endfor を丁寧にみてみるみることにする。
~使い方 1~
まずは、超初心者編。
マニュアルには、
-----
【リスト】の順序を使用して、【パラメータ】に割り当てられた【リスト】内の各値に対し、【ここに式を書く】を1回ずつ実行します。
-----
と書かれています。
下記のスクリプトを実行するとどうなるか?
このループ、2回だけループされます。
1回目、x1
f = x1
Filter_a.new_name.x1 = x1 >< '_test'
x1をx1_testにリネーム
2回目、x9
f = x9
Filter_a.new_name.x9 = x9 >< '_test'
x9をx9_testにリネーム
となります。
これだと、リストを手打ちで書くため、スクリプトでわざわざ書くご利益はありません。
スクリプトを実行した結果は
となります。
そこで、フィルタノードを使いフィールド名を整形するのだが…
フィールド数が少ない場合は、手で修正できるのだが、フィールド数が多くなってくると、手で修正するのも面倒になる。
そこで、スクリプトを使って、簡単に修正するスクリプトを調べた。
基本は、"for ... endfor"を理解するだけの簡単なスクリプトなのだが、せっかくなので、for ... endfor を丁寧にみてみるみることにする。
~使い方 1~
まずは、超初心者編。
for パラメータ in リスト
ここに式を書く
endfor
マニュアルには、
-----
【リスト】の順序を使用して、【パラメータ】に割り当てられた【リスト】内の各値に対し、【ここに式を書く】を1回ずつ実行します。
-----
と書かれています。
下記のスクリプトを実行するとどうなるか?
for f in x1 x9
set Filter_a.new_name.^f = ^f >< '_test'
endfor
このループ、2回だけループされます。
1回目、x1
f = x1
Filter_a.new_name.x1 = x1 >< '_test'
x1をx1_testにリネーム
2回目、x9
f = x9
Filter_a.new_name.x9 = x9 >< '_test'
x9をx9_testにリネーム
となります。
これだと、リストを手打ちで書くため、スクリプトでわざわざ書くご利益はありません。
スクリプトを実行した結果は
となります。