스크립트에서 이전에 계산 된 변수를 사용하여 새 수식 열을 만들려고하지만 수식은 변수가 정의 된 방식을 좋아하지 않습니다. 데이터 테이블을 만든 후 수식을 열면 "이 이름은 현재 컨텍스트에 있지만 수식에는 로컬로 정의되어 있지 않습니다."라는 오류가 표시됩니다.
//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 (Substitute (내가 거기에 varibles가있는 경우 계산)의 모든 열을?