테이블에서 순환 또는 반복 수식을 처리합니다(순환 참조라고도 함).반복되는 공식이 있습니다.JMP는 이 문제를 해결할 수 있지만 새 공식을 만들 때마다 주기에 대해 경고합니다.
내가 어떻게 할 수있는:
- 새로운 반복을 강제하시겠습니까?
- 반복 문제를 해결하기 위해 반복 횟수(또는 중지 기준)를 구성하시겠습니까?
- 평가가 다시 발생하지 않도록 하시겠습니까? 수식 메뉴의 평가 억제 옵션이 작동하지 않았습니다.
기능은 조금 더 복잡하지만 다음과 다르지 않아 불만 없이 작동합니다.
X(k+1) = 0.99 * X(k)
If(
Selected() == 1, 1,
Row() == 1, 1,
Lag( :X ) * 0.99
)
고급 통계 모델링소비자 및 시장 조사데이터 접근품질 및 프로세스 엔지니어링신뢰성 분석Re: 테이블에서 순환 또는 반복 수식(순환 참조라고도 함)을 처리합니다.제공한 함수는 경고 없이 있는 그대로 작동해야 합니다.실제로 B에 대한 수식에서 A열을 참조하고 A에 대한 수식에서 B열을 참조하는 경우 해당 논리를 단일 수식으로 작성하거나 다음을 따를 수 있습니다. @Craige_Hales 의 조언을 따르고 대신 스크립트를 사용하여 그렇게 하세요.
예제 수식이 포함된 표는 경고나 오류 없이 평가되어야 합니다.
New Table( "Untitled 16",
Add Rows( 10 ),
New Column( "X",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( Selected() == 1, 1, Row() == 1, 1, Lag( :X ) * 0.99 ) ),
Set Selected
),
Set Row States( [0, 0, 0, 0, 1, 0, 0, 0, 1, 0] )
)
Re: 테이블에서 순환(또는 반복) 수식 처리JMP의 수식 계산기는 먼저 비수식 열에만 의존하는 수식 열을 평가한 다음 이미 평가된 수식 열에 의존하는 수식 열을 평가하는 방식으로 작동합니다. A 열의 공식이 B 열에 종속되고 B 열의 공식이 A 열에 종속되는 경우 JMP는 어느 공식을 먼저 평가할지 선택할 수 없습니다. JMP를 속여 순환 종속성을 생성하는 경우 어느 열이 다른 열의 이전 데이터를 사용하고 있는지 확신할 수 없습니다.
JMP는 위에서 아래로 열을 평가합니다. 수식 내에서 지연 함수(또는 하위 스크립트)를 사용하여 이전 행을 보고 이전에 계산된 값을 가져올 수 있습니다. 향후 행을 보면 어떤 일이 발생하는지 잘 모르겠지만 해당 값은 아직 계산되지 않았습니다.
Excel 규칙을 기반으로 작동할 수 있다고 생각할 수 있는 공식이 있지만 JMP는 스프레드시트가 아닙니다 위의 규칙에 따라 플레이합니다. A열이 B열의 시차를 참조하고 B열이 A열의 시차를 참조하도록 해야 한다면 A, B를 수식이 아닌 열로 만들고 JSL을 작성하여 채워야 합니다. "데이터를 업데이트해야 할 때 실행하세요"와 같은 이름을 사용하여 해당 JSL을 테이블 스크립트에 추가합니다.
재귀 함수가 있는 경우 자신을 호출하는 JSL 함수를 만들 수 있습니다. JSL은 허용되는 재귀 깊이 제한이 100 정도로 상당히 낮습니다. 재귀를 중지할 시기를 결정하는 if 문을 직접 작성해야 합니다. 일반적으로 깊이 매개변수는 재귀를 중지하는 데 사용됩니다(예: (테스트되지 않았으며 무의미함...))
f = function({depth}, if(depth < 10, /* do something */ f(depth + 1) ) );
f(0)
Re: 테이블에서 순환(또는 반복) 수식 처리참고로 Excel에서는 순환 참조를 처리하기 위해 다음과 같은 옵션을 제공합니다.
https://support.microsoft.com/en-us/office/change-formula-recalculation-iteration-or-precision-in-excel-73fc7dac-91cf-4d36-86e8-67124f6bcce4#:~:text=Iteration%20is %20%20반복%20재계산,%20불러짐%20a%20원형%20참조 .