루프 및 요약을 사용하는 JSL 스크립트이 루프를 작동시키는 방법에 대한 제안이 필요합니다. Group(Box(i))이 있는 줄에서 딸꾹질을 계속하고 숫자 또는 괄호/잘못된 열 이름에 문제가 있다고 생각했습니다. 그러나 이것들을 조정해도 도움이 되지 않았습니다
For( j = 1, j < 3, j++,
nrj j = dt1 << Summary(
Group( Box( i ) ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ),
output table name( "Sum " || Char( j ) )
)
);
데이터 접근데이터 혼합 및 정리Re: 루프 및 요약을 사용하는 JSL 스크립트장소 ID라는 열이 있는 데이터 테이블을 만들었습니다.1에서 850 사이의 100개의 임의 값으로 채웠습니다.

그런 다음 다양한 Box 및 ActualLoc 코드 섹션을 실행하고 다음과 같은 데이터 테이블을 생성했습니다.

이러한 작업을 수행하려는 의도가 보이지 않습니다.
당신이 사용하고 있는 일부 요소를 이해하지 못하는 것 같습니다.첫 번째 For() 루프 내에서 Scenario, Box 및 ActualLoc의 동일한 열을 5번 만듭니다.그리고 JMP는 동일한 이름을 가진 열을 허용하지 않으므로 첫 번째 루프 중에 Scenario, Box 및 ActualLoc을 생성할 때 이것이 실제 이름을 사용하게 됩니다.그러나 루프 2에서 JMP는 이름을 시나리오 2, 상자 2 및 ActualLoc 2로 지정합니다. 루프 3, 4, 5는 이 동작을 반복합니다.사용된 공식도 약간 혼란스럽습니다.(:Place ID - i)의 사양을 반복적으로 사용하고 있습니다.이것은 수식에서 사용되기 때문에 수식이 데이터 테이블의 각 행에 적용되고 이 계산의 결과는 주어진 행에 대한 변수 장소 ID의 값이 됩니다(예: 내 데이터 테이블의 값은 268)이며 첫 번째 루프에서 1, 두 번째 루프에서 2 등의 값을 갖는 i의 현재 값을 뺍니다. 따라서 행 1의 값 범위는 267에서 263까지입니다. .나는 당신이 :Place ID -1이 :Place ID 앞에 오는 열을 참조한다고 생각할 수 있다고 생각합니다.
저를 도와주시고 장소 ID 열이 있는 데이터 테이블에 대해 무엇을 하려고 하는지 명확히 해주시겠습니까?
Re: 루프 및 요약을 사용하는 JSL 스크립트MMMM 잘 모르겠습니다...내 스크립트 기술은 수준 이하입니다. 여기 내 전체 코드가 있습니다. 요약 단계가 있는 루프 섹션까지 정상적으로 실행됩니다.
t1 = Open( "C:\Users\ClaireR\Desktop\Example\ExampleABC.jmp" );
For( i = 1, i <= 5, i++,
dt1 << New Column( "Scenario", Numeric, "Continuous", Formula( :Place ID - i ) );
dt1 << New Column( "Box",
Character,
"Nominal",
Formula(
If( (:Place ID - i) <= 200,
"Ground",
If( (:Place ID - i) <= 250,
"Drop 1",
If( (:Place ID - i) <= 400,
"Ground",
If( (:Place ID - i) <= 450,
"Drop 2",
If( (:Place ID - i) <= 600,
"Ground",
If( (:Place ID - i) <= 650,
"Drop 3",
If( (:Place ID - i) <= 800,
"Ground",
If( (:Place ID - i) <= 850,
"Drop 4",
"Ground"
)
)
)
)
)
)
)
)
)
);
dt1 << New Column( "ActualLoc",
Character,
"Nominal",
Formula(
If( (:Place ID - i) <= 200,
"Ground",
If( (:Place ID - i) <= 250,
:Place ID 2,
If( (:Place ID - i) <= 400,
"Ground",
If( (:Place ID - i) <= 450,
:Place ID 2,
If( (:Place ID - i) <= 600,
"Ground",
If( (:Place ID - i) <= 650,
:Place ID 2,
If( (:Place ID - i) <= 800,
"Ground",
If( (:Place ID - i) <= 850,
:Place ID 2,
"Ground"
)
)
)
)
)
)
)
)
)
);
);
:Scenario << Set Name( "Scenario 1" );
:Box << Set Name( "Box 1" );
:ActualLoc << Set Name( "ActualLoc" );
mrj = {};
For( j = 1, j < 3, j++,
newDT = dt1 << Summary(
Group( Box[j] ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ),
output table name( "Sum " || Char( j ) )
);
Insert Into( mrj, newDT );
);
Re: 루프 및 요약을 사용하는 JSL 스크립트나는 Box가 목록이고 각각이 변수의 이름인 여러 요소를 포함하는 Box라는 메모리 변수를 참조하고 있다고 가정했습니다. 이것이 아니라면 Box는 무엇입니까?Re: 루프 및 요약을 사용하는 JSL 스크립트고마워 짐.
목록 변수 및 오타를 추가해야 할 필요성을 이해합니다. 그러나 코드를 업데이트하고 실행하면 이 오류가 발생합니다. 내 열 이름은 "Box 1"입니다. "상자 2" 등
그러나 나는 열 이름을 Box1 , Box 2 및 Box3 등으로 변경하려고 시도했지만 동일한 오류가 발생했습니다. 어떤 제안?

Re: 루프 및 요약을 사용하는 JSL 스크립트// I am assuming that your syntax of
// nrj j = dt1 << Summary(
// was an attempt to create a pointer to each new data table
// being created in the Loop, one for each column in the list
// of columns called "Box"
// To do that, one needs to create a new List variable, and then
// populate the list by inserting the new data table reference
// by using an "Insert Into()" on each loop
// Create a list variable to hold the data table references
mrj = {};
For( j = 1, j < 3, j++,
newDT = dt1 << Summary(
// Your reference to the list variable called "Box"
// Group( Box(i) ),
// incorrect for 2 reasons. 1. When referencing a
// subscript, it is done using square brackets [ ],
// 2. the index variable you are specifying is "i",
// while the index variable for your For() loop is
// a the variable "j"
Group( Box[j] ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ),
output table name( "Sum " || Char( j ) )
);
Insert Into( mrj, newDT );
);