スクリプトの前半で計算された変数を使用して新しい数式列を作成しようとしていますが、数式は変数の定義方法とは異なります。データテーブルの作成後に式を開くと、「この名前は現在のコンテキストに存在しますが、式の中でローカルに定義されていません」というエラーが表示されます。
//Checks the calibration accuracy
current data table(dt_1C_comparison);
Avg_1C_grab = :"New Diff." << get values;
Avg_1C_diff = mean(Avg_1C_grab);
show(Avg_1C_diff);
offsetadjust_1Cpos = Avg_1C_diff - 0.3;
offsetadjust_1Cneg = Avg_1C_diff + 0.3;
x1C = If(
(Avg_1C_diff > 0.3), offsetadjust_1Cpos,
(Avg_1C_diff < -0.3), offsetadjust_1Cneg,
Avg_1C_diff = 0,
);
current data table(dt_1C_comparison);
//Caclulates new offset if the wet/dry difference is greater then 0.3
Offset_1C = Mean1C_intercept - x1C;
Show(Offset_1C);
New Column("Wet Avg. 2", numeric, "continuous", Format("Best", 5), Formula(:"Average of Meas. Position=TopDRY" * Slope_1C + Offset_1C));
任意の助けは大歓迎です!
問題は式のあなたの構築です。 あなたがそれを定義している方法では、公式はあなたがそれを作成したのと全く同じように格納されます:
:"Average of Meas. Position=TopDRY" * Slope_1C + Offset_1C
式が実行されると、Slope_1CおよびOffset_1CというJSL変数が検索されます。 データテーブルを保存し、その後しばらくしてJMPセッションを開始してこのデータテーブルを開くと、現在JMPで使用可能な名前のJSL変数があることをイメージするのは困難です。セッション。 だからあなたがする必要があるのは、変数の参照をJSL変数の実際の値で置き換えることです。
:"Average of Meas. Position=TopDRY" * .5 + 3.2
Slope_1CとOffset_1Cの値をそれぞれ0.5と3.2にしています。
これを行うための最も簡単な方法は、Substitute()関数を使用することです。 これが、JSL変数の実際の現在値である式に代入するように変更されたスクリプトです。
//Checks the calibration accuracy
Current Data Table( dt_1C_comparison );
Avg_1C_grab = :"New Diff." << get values;
Avg_1C_diff = Mean( Avg_1C_grab );
Show( Avg_1C_diff );
offsetadjust_1Cpos = Avg_1C_diff - 0.3;
offsetadjust_1Cneg = Avg_1C_diff + 0.3;
x1C = If(
(Avg_1C_diff > 0.3), offsetadjust_1Cpos,
(Avg_1C_diff < -0.3), offsetadjust_1Cneg,
Avg_1C_diff = 0,
);
Current Data Table( dt_1C_comparison );
//Caclulates new offset if the wet/dry difference is greater then 0.3
Offset_1C = Mean1C_intercept - x1C;
Show( Offset_1C );
Eval(
Substitute(
Expr(
New Column( "Wet Avg. 2",
numeric,
"continuous",
Format( "Best", 5 ),
Formula( :Name("Average of Meas. Position=TopDRY") * __Slope_1C__ + __Offset_1C__ )
)
),
Expr( __Slope_1C__ ), Slope_1C,
Expr( __Offset_1C__ ), Offset_1C
)
);
それがうまくいったありがとう!
私の最初の記事の方法と同じように、私のスクリプトの前の方で計算された変数に基づいて新しい列を計算するという私のスクリプトの中のいくつかのポイントがあります。thisEval(Substitution(計算するすべての列に対して(変数がある場合))を使用する必要がありますか?