변수에 대해 혼란스러워요지역 변수가 어떻게 작동하는지 파악하는 데 개념적인 문제가 있습니다. 나에게 혼란스러운 부분에 초점을 맞추기 위해 문제를 단순화하겠습니다.
값이 5인 t0이라는 지역 변수를 만듭니다. 그런 다음 이 값을 1씩 증가시키는 열 수식을 작성합니다. t0=t0+1 또는 t0+=1(중요하지 않은 것 같습니다) 제가 예상한 결과는 JMP가 열의 각 셀을 평가할 때 변수를 증가시켜 열 아래로 이동할 때 6, 7, 8 등을 얻게 된다는 것입니다. 대신, 나는 6의 열을 얻습니다. 따라서 수식은 변수를 증가시키지 않습니다.
JMP가 지역 변수를 처리하는 방식에 대해 제가 이해하지 못하는 부분을 누군가 설명해 주실 수 있나요? 또한 내 접근 방식이 작동하지 않으므로 변수를 증가시키는 다른 방법이 있습니까? Lag를 사용하여 할 수 있지만 너무 간단한 것에 비해 불필요하게 복잡해 보입니다.
또한 지역변수, 테이블변수, 매개변수의 구분이 명확하지 않습니다.
제공된 모든 도움에 미리 감사드립니다.
자동화 및 스크립팅Re: 변수에 대해 혼란스러워요You might be interested in the Row() function inside of a column formula -- it returns the current row that the formula is being run against. As for variables and scoping -- it is usually best to be explicit about variable scopes. Thus to use a global counter, do ::t0 += 1 -- the double colon explicitly scopes the name to the global namespace. If you want a local name, explicitly scope it, i.e., local:t0 There is also the Here namespace, and again it is best to be explicit in scoping. I recommend being explicit as JMP is buggy and will not always adhere to the stated scoping rules.
Re: 변수에 대해 혼란스러워요열 수식으로 다음과 같은 내용을 작성한 것 같습니다.
Local({t0 = 5}, t0 = t0 + 1)
그리고 당신은 초기 할당이
t0 = 5
데이터 테이블이 위에서 아래로 셀 단위로 열을 평가할 때 한 번만 발생합니다.
당신은 그것이 일어나지 않는 것을 보았습니다. 보시는 것은 셀이 평가될 때마다 할당이 발생한다는 것입니다. SAS 프로그래밍 경험이 있다면 SAS의 RETAIN 문과 유사한 것을 찾을 수 있습니다. JMP의 스크립팅 언어에 그런 것이 존재한다는 것을 몰랐습니다.
하지만 이전 계산에서 결과를 검색해야 하는 계산도 비슷한 방식으로 수행해야 했습니다.
결과가 중간적이고 일시적인 경우 결과를 별도의 열에 저장하겠습니다. 결과가 동일한 열의 이전 셀에 있는 값인 경우 이전 셀만 참조하겠습니다. 어느 쪽이든 @ErraticAttack이 언급한 Row() 함수를 사용해야 할 수도 있습니다.
설명하기 위해 예를 첨부합니다.