마지막 게시물로 해결책을 찾았다 고 생각했지만 문제는 생각보다 복잡합니다. 내 열 중 하나에 포함 된 값을 기반으로 문자열 배열을 만들었습니다. 그런 다음 배열 값을 반복하면서 Where 절로 전달하면서 Bivariate () 함수를 반복하고 싶습니다. 스크립트를 실행하면 스플라인이 올바르게 생성되지만 {save forecasts} 명령이 제대로 작동하지 않습니다. 저장된 예측은 배열의 마지막 요소에 속하고 다른 요소에는 포함되지 않습니다. {for expected}는 for 루프가 끝날 때 / ProcessArray의 마지막 요소 만 반복 실행되는 대신 ProcessArray의 for 루프 / 모든 요소를 반복 실행하는 대신 실행됩니다.
l = 0;
Proc = "new";
ProcessArray = {};
DataCV=open("C:\Desktop\JMP\sample_data.csv")<BR />
For (l = 1, l < 32521, l++, // Create array of strings
if (proc == (Row()=l; :process),
print("same process"),
Insert Into(processArray, (Row()=l; :process)); proc = (Row()=l; :process); Show(proc)
);
);
for (n = 1, n <= length(processArray), n++, // Create and save multiple splines, for all values of ProcessArray[]
Bivariate(
Y( :c_mm_deembed_pf ),
X( :v_dut_volt ),
Where( :c_type == "Cdg" & :process == ProcessArray[n] ),
Fit Spline( 0.1, standardized, {save predicteds})
);
);

@ adjo9835 ,
Where () 절을 사용하는 동안 Save Predicted를 지정하면 결과 예측 식은 다음과 같습니다.

이 값은 Where () 절에 대한 하드 코딩 된 값으로 만들어졌습니다. 각 Bivariate 창의 제목을 보면 다음과 같이 표시됩니다.
Where( :c_type == "Cdg" & :process == ProcessArray[n] )
JMP는 스플라인을 올바르게 계산하지만 ProcessArray [n]의 값을 대체하지는 않습니다.
이변 수 루프를 다음과 같이 수정하는 것이 좋습니다.
for (n = 1, n <= length(ProcessArray), n++, // Create and save multiple splines, for all values of ProcessArray[]
Eval( EvalExpr( Bivariate(
Y( :c_mm_deembed_pf ),
X( :v_dut_volt ),
Where( :c_type == "Cdg" & :process == Expr(ProcessArray[n] ) ),
Fit Spline( 0.1, standardized, {save predicteds})
) ) );
); //end for
또한 column : process에서 고유 한 값의 목록을 얻으려면 Summarize () 또는 Associative Array ()를 사용하여 간단하게 처리 할 수 있습니다. JMP 샘플 데이터 테이블을 사용하여 아래 스크립트를 참조하십시오.
Names Default to Here(1);
dt = Open("$Sample_Data/SATByYear.jmp");
r_aa = (Associative Array(:Region)) << get keys;
show(r_aa);
summarize( rarray = By(:Region));
show(rarray);
for(n=1, n <= nitems(rarray), n++,
Eval (EvalExpr(
Bivariate(
Y( :SAT Math),
X( :Year),
Where( :Region == Expr( rarray[n] ) ),
Fit Spline( 0.1, standardized, {save predicteds})
)
))
);