列式内で変数を宣言するこんにちは、
列の数式内で変数を宣言するのは良い習慣でしょうか? それとも、これによってエラーが発生するリスクが生じますか? 私の数式はうまく機能しますが、信頼性が低いのではないかと心配しています。
rownum = Row();
If( :Measurement type == "STUDY_VARIABLE",
:Control means[Min(
Current Data Table() << get rows where( :Measurement type == "STUDY_CONTROL" & :Control group == :Control group[rownum] )
)],
:Control means
);
設定は次のとおりです。
- :測定タイプは、各行にSTUDY_CONTROLまたはSTUDY_VARIABLEのラベルを付ける列です。
- :コントロールグループは、ラベル(文字のみ)を使用して、STUDY_VARIABLESの行を、関連するSTUDY_CONTROL行の適切な平均(:コントロール平均)に関連付ける列です。
- :コントロールグループ[Row()]は機能しなかったため、最初にrownum変数を指定しました
これはエレガントな解決策でしょうか、それとも危険なハックでしょうか?
2 番目の質問として、エディターは数式で Current Data Table() を使用するのは危険であると警告していますが、もっと良い代替手段はありますか?
ご協力いただければ幸いです。これは私の最初の質問です。
デビッド
Re: 列式内で変数を宣言するクラブへようこそ!
:)
「現在のデータ テーブル()」に関するご質問に関して、 Scripters Club の記録: 堅牢でフェイルセーフなスクリプトの作成で共有されたスクリプトのスクリーンショットを以下に示します。

テーブルを変数に保存し、その変数をスクリプトで使用します。スクリーンショットの例では、それは「dt」になります。
Re: 列式内で変数を宣言する本当に JSL スクリプトに関する素晴らしい講義でした!
この 1 時間で、何ヶ月もの頭痛から解放されます : )
この問題については、 Col Min( ...)を参照してください。
それはあなたのためにすべての作業を実行します:
rownumを宣言する必要はありません。現在のデータ テーブルにアクセスしたり、 where() で行を取得したりする必要はありません。
: )

Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "Measurement type",
Character,
Formula(
Map Value(
:sex,
{"F", "STUDY_VARIABLE", "M", "STUDY_CONTROL"}
)
)
);
:weight << Set Name( "Control means" );
:age << Set Name( "Control_Group" );
// ^^^^^^^^prepare table
// vvvvvvvv how to use Col Min()
New Column( "myCol",
Formula(
If( :Measurement type == "STUDY_VARIABLE",
Col Minimum(
If( :Measurement type == "STUDY_CONTROL",
:Control means,
Empty()
),
:Control_Group
),
:Control means
)
)
)