For 루프에서 수식 열 만들기부적합 코드에 대한 부적합 비율을 계산하고 사용자가 입력 한 날짜 범위에 대해 각 코드에 대한 관리도를 작성하는 스크립트가 있습니다. 사용자는 최대 5 개의 개별 코드를 입력 할 수 있으며 50 개 이상의 코드를 선택할 수 있습니다. 날짜별로 코드 당 부적합한 총 수량, 입력 된 모든 코드의 부적합 수량의 합계 및 일일 총 생산량 (코드 별 NC 비율 - 원)이있는 테이블이 생성됩니다. 그런 다음 루프를 반복하여 각 코드에 대한 비유 도율을 계산 한 후 열을 추가하여 비율을 비율로 표시합니다 (코드 별 날짜 별 NC 비율 - 완료). 현재 모든 요율 열은 동일하게 끝나고 비율의 정확한 백분율 버전은 아니지만 백분율 열입니다.
루프는 기본적으로 스크립트 마지막 부분에서 작성되어 전체 날짜 범위 (코드 당 전체 NC 비율 - 코드 당 전체 NC 비율 - 전체)에서 부적합한 데이터를 요약하여 작성한 것으로 정확하게 계산되며 무슨 일이 벌어 지는지 말해.
나는 metnioned 테이블과 스크립트 섹션의 스크린 샷을 보여주었습니다 (코드 = 문자열로 입력 된 모든 코드 목록, SD 및 NR은 테이블 참조입니다)
//NC Rate By Date Per Code Section
//Calculate NC rates and percentages for entered codes if two or more codes are entered
If(NItems(codes)>=2,
For(c=2, c<=NItems(codes)+1, c++,
//Add NC Rate column for each code
NR<<NEW column="">=2,
For(c=2, c<=NItems(codes)+1, c++,
//Add NC Rate column for each code
SD<<NEW column=""></NEW></NEW>제목 : Re : For 루프에서 수식 열 만들기 @rfeick ,
마지막 두 열의 fomula와 for 루프 내에서 생성 된 fur의 차이가 있습니다. 마지막 두 열은 컴퓨팅을 수행하기 위해 실제 열을 참조합니다.
for 루프 사양에 의해 만들어진 몇 가지 열 수식을 살펴 봐야합니다 (아래 참조)
NR<<NEW column=""></NEW>
수식은 다음과 같을 것입니다. 결과 값은 c의 값을 가지지 않으므로 결과는 c의 최종 값의 결과가됩니다.
<SPAN class="token function">Round</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token function">Column</SPAN><SPAN class="token punctuation">(</SPAN>c<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token punctuation">]</SPAN> <SPAN class="token operator">/</SPAN> <SPAN class="token punctuation">:</SPAN>Manufactured Qty<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token number">4</SPAN><SPAN class="token punctuation">)</SPAN>
이 테이블을 저장하고 나중에 새 JMP 세션에서 열고 다시 열 수식을 다시 입력하면 JMP는 c 값을 알 수 없습니다.
수식을 수정하여 c의 값으로 대체되는 식을 사용하거나 수식 대신 계산 된 값을 저장하도록 스크립트를 변경해야합니다. 아래 코드는 각 값 설정 ()을 사용하여 수식이 아닌 값을 저장하는 방법을 보여줍니다.
tcol = NR<<NEW column=""></NEW>
제목 : Re : For 루프에서 수식 열 만들기설명해 주셔서 감사합니다. Set Each Row 방법을 사용해 보았고 매일 부적합 률을 계산할 때 발생하는 문제를 해결했습니다. 내가 아직도 혼란스러워하는 한 가지 점은 동일한 이론이 스크립트의 한 섹션에서 어떻게 작동 했는가?Re : For 루프에서 수식 열 만들기 r ,
아래 스크립트는 변수 열의 값이 변경 될 때 수식 (및 해당 값)이 변경되기 때문에 수식 열에 변수를 사용하는 JMP14부터 잘못된 결과를 생성 할 수 있음을 이해하는 데 도움이 될 것입니다.
스크립트의 마지막 두 공식에 대해 :
설명 된대로 아래 스크립트를 실행하십시오. 테이블 수식에서 발생하는 일과 그에 따른 값을 보여줍니다. 이 스크립트에는 수식을 사용하여 수식의 변수를 변수 값으로 바꾸는 방법도 포함되어 있습니다. 일반적으로 Set Each Value ()를 사용하므로 소스 열이 삭제되면 열이 그대로 유지됩니다. 또한이 스크립트는 씨 열 번호 수식을 포함하려면 새 변수를 만드는 것이 좋습니다. cnme = 열 (c) << 이름 가져 오기 그런 다음 Column (cnme) 및 표현식을 사용하십시오. 그런 다음 테이블이 재구성되면 공식은 예상대로입니다. 아래에 표시된 스크립트가 첨부되어 있습니다.
Names Default to Here(1);
dt = Open("$Sample_Data/Big Class.jmp");
//will create formula columns for height and weight using a relative column number , c
//c will change, simulating a loop.
//highlight the blocks of code and follow the instructions
//--- Block 0: run this to embed the log window
_cw = Current Window();
_ifb = _cw << Find( If Box( 1 ) );
wait(0);
_ifb << Set( 1 );
//--- end Block 0
//--- Block 1: run it and look at the look at the embedded log
c=4; //height
dt << New Column( (column(c) << get name) ||" per age", Numeric, Continuous, Formula(Round(column(c)[] /:age,2) ) );
nc1 = ncol(dt);
show( c, nc1, (column(nc1) << get formula), column(nc1)[1::5]);
//--- end Block 1
//--- Block 2: run it and look at the look at the embedded log
c=5; //weight
dt << rerun formulas;
nc1 = ncol(dt);
show( c, nc1, (column(nc1) << get formula), column(nc1)[1::5]);
//--- end Block 2 See the log, the formula is the same, but c has changed so the formula is now using column 5 (c=5)
// for its calculation
//--- Block 3: run it and look at the look at the log
c=5; //height
dt << New Column( (column(c) << get name) ||" per age", Numeric, Continuous, Formula(Round(column(c)[] /:age,2) ) );
nc2 = ncol(dt);
show( c, nc2, (column(nc2) << get formula), column(nc2)[1::5]); //same formula as nc1
show(column(nc1)[1::5], column(nc2)[1::5]);
//--- end Block 3
//will use formula columns for weight and height using expressions column number
//--- Block 4: run it and look at the look at the log
c=4; //height
Eval ( Eval Expr(
dt << New Column( (column(c) << get name) ||" per age using expr", Numeric, Continuous, Formula(Round(column(expr(c))[] /:age,2) ) )
));
nc3 = ncol(dt);
show( c, nc3, (column(nc3) << get formula), column(nc3)[1::5]);
//--- end Block 4 - note the formula now has the exact column number, it no longer relies on "c"
//--- Block 5: run it and look at the look at the log
c=5; //height
Eval(EvalExpr(
dt << New Column( (column(c) << get name) ||" per age using expr", Numeric, Continuous, Formula(Round(column(Expr(c))[] /:age,2) ) );
));
nc4 = ncol(dt);
show( c, nc4, (column(nc4) << get formula), column(nc4)[1::5]); //not the same formula as nc3,
show(column(nc3)[1::5], column(nc4)[1::5]);
//--- end Block 5
Re : For 루프에서 수식 열 만들기추가 설명 감사합니다!