JMP 계산식 편집기에서 계산식에 조건부 표현식(줄여서 조건이라고 함)을 포함할 수 있습니다. 이러한 표현식을 사용하면 절과 결과 표현식으로 쌍을 이루는 연속된 구문을 생성할 수 있습니다. 연속된 구문을 생성하여 계산 열의 셀에 조건부로 값을 할당합니다. 조건은 다음과 같은 규칙을 따릅니다.
• true가 되는 절이 없으면 계산식 편집기는 else 절에서 제공되는 결과 표현식을 실행합니다.
• 조건부 표현식의 모든 결과 표현식은 동일한 데이터 유형이 되어야 합니다.
• 결측 항은 모든 데이터 유형과 매칭됩니다.
• 정의에 따라, 결과가 0이 되는 표현식은 false입니다.
• 표현식 결과가 결측이면 해당 절이 실행되지 않고 결측값이 반환됩니다. 다른 모든 숫자 표현식은 true입니다.
구문에 대한 자세한 내용은 Scripting Guide의 조건 함수 및 JSL Syntax Reference의 "Conditional and Logical Functions"에서 확인하십시오.
표현식을 확장하려면 계산식 편집기 패널의 삽입 및 삭제 버튼을 사용하십시오. 효율성을 최대화하려면 가장 자주 실행되는 절 및 결과 쌍을 조건 시퀀스의 맨 앞에 나열하십시오.
참고: Interpolate, Step, For 및 While는 주로 다른 명령과 함께 JSL 스크립트를 생성하는 데 사용됩니다. 계산식 편집기를 사용하여 해당 열에서 스크립트를 생성하고 실행할 수 있지만 이로 인해 발생할 수 있는 종속성 및 모호성 문제 때문에 권장되지 않습니다. 대개 스크립트는 .jsl 파일로 저장되며, 데이터 테이블과 함께 테이블 특성으로 저장될 수 있습니다. 테이블 특성에 대한 자세한 내용은 "데이터 테이블의 테이블 패널"에서 확인하십시오. 스크립트 명령에 대한 설명은 JSL Syntax Reference에서 확인하십시오.
빈 표현식 하나와 빈 then 절 하나가 포함된 단일 If 조건을 표시합니다. 표현식 또는 then 절을 강조 표시하고 값을 입력하십시오. 예를 들어 Figure A.3에서는 count 및 total 열을 사용하여 총 수가 0이 아닐 때 개수를 총 수 대비 백분율로 계산합니다.
그림 A.3 조건부 표현식
If 조건에 새 조건을 추가하려면 then 절을 강조 표시하고 계산식 편집기 키패드의 삽입 버튼(
)을 클릭하십시오. 이렇게 하면 처음에는 기존 else 조건이 표현식 절로 변경됩니다. 삽입 버튼을 다시 클릭하면 else 절이 추가됩니다. then 또는 else를 강조 표시하고 삽입 버튼을 반복적으로 클릭하면 else가 표현식으로 변경되거나 새 표현식 절이 추가됩니다.
절을 삭제하려면 해당 절 위의 then 절을 선택하고 Delete 키를 누르거나 계산식 편집기 키패드의 삭제 버튼(
)을 클릭합니다.
정의에 따라, 결과가 0이 되는 표현식은 false입니다. 표현식 결과가 결측이면 해당 절이 실행되지 않고 결측값이 반환됩니다. 다른 모든 숫자 표현식은 true입니다.
표현식을 절 목록과 비교한 후 첫 번째로 매칭되는 절의 결과 표현식 값을 반환합니다. 매칭 표현식을 한 번만 지정한 후 각 절의 매칭 값을 지정해야 합니다.
계산식 편집기에서 Match를 선택하면 다음과 같은 두 개의 옵션이 있는 목록이 나타납니다.
• 데이터에서 Match 인수 추가를 선택하면 데이터의 모든 수준에 해당하는 절이 자동으로 추가됩니다. 또는 Shift 키를 누른 채 조건을 선택하고 Match를 선택합니다. Figure A.4에서 이미지 왼쪽의 예는 자동으로 추가된 절을 보여 줍니다.
• 각 절을 개별적으로 추가할 수 있도록 추가 안 함을 선택합니다. Figure A.4에서 이미지 오른쪽의 예는 비어 있는 절을 보여 줍니다. 누락된 표현식을 여기에 채워 넣어야 합니다.
그림 A.4 Match 함수의 사용 예
자동으로 채워진 인수에서는 then 절을 강조 표시한 후 표현식을 입력해야 합니다. 빈 인수에서는 표현식, 값 또는 then 절을 강조 표시한 후 표현식을 입력합니다. (또는 표현식을 강조 표시하고 Match를 클릭해도 됩니다. 그러면 계산식 편집기가 원래의 강조 표시된 표현식이 표현식으로 포함된 새 Match 조건을 추가하고 값 및 else 절에는 아무 작업도 수행하지 않습니다.) 또한 다음 사항을 참고하십시오.
• Match는 변수가 데이터베이스의 각 행에 대해 한 번씩만 계산되므로 동등한 기능의 If에 비해 실행 속도가 빠르고 메모리 사용량은 적습니다. If 조건은 If 절의 결과가 true가 될 때까지 각 행에 대한 각각의 If 절에서 변수를 계산해야 합니다. Match 조건과 If 조건의 비교는 비교 함수에서 확인하십시오.
• If 및 Match를 사용할 경우 계산식 편집기는 시퀀스의 맨 위부터 아래로 검색하여 첫 번째 true 절을 찾고 해당하는 결과 표현식의 값을 구합니다. 이후의 true 절은 무시됩니다.
다음 예에서는 age 변수의 값에 따라 각각의 값이 할당됩니다.
그림 A.5 Match 함수의 사용 예
참고: Match는 후행 공백을 무시하지만 If는 그렇지 않습니다.
Match는 결측값에 대해 결측값을 반환하지만 명시적으로 결측값을 매칭할 수도 있습니다.
Choose는 조건의 인수가 1부터 시작하는 정수 수열인 특수한 형태의 Match입니다. 절의 값은 매칭 조건을 대체합니다. Figure A.6에서는 Choose 조건의 예를 보여 줍니다. Choose를 사용할 경우 계산식 편집기는 올바른 선택 절로 바로 이동하여 결과 표현식을 계산합니다.
그림 A.6 Choose 조건의 예
표현식을 강조 표시하고 Choose를 클릭하면 계산식 편집기가 한 개의 절을 포함하는 새 조건부 표현식을 생성합니다. 새 절을 추가하거나 필요하지 않은 절을 제거하려면 If 조건에서 이미 설명한 대로 삽입(
) 또는 삭제(
) 버튼을 사용하십시오.
Choose는 Choose 표현식을 계산하고 즉시 해당하는 결과 표현식으로 이동하여 반환 값을 생성합니다. Choose를 사용할 경우에는 1부터 시작하여 순차적 정수를 한 번씩만 생성하는 선택 표현식을 지정한 후 수열의 각 정수를 지정해야 합니다.
각 인수 쌍의 첫 번째 항목을 평가하고 그 중 최대값과 연결된 결과 표현식(두 번째 항목)을 평가하여 결과를 반환합니다. 최대값을 갖는 표현식이 둘 이상이면 첫 번째 최대값이 반환됩니다. 모든 표현식이 결측되고 최종 결과가 지정되지 않은 경우에는 결측값이 반환됩니다. 모든 표현식이 결측되고 최종 결과가 지정된 경우에는 해당 최종 결과가 반환됩니다. 테스트 표현식의 결과는 숫자 값이어야 하지만 결과 표현식은 무엇이든 될 수 있습니다.
각 인수 쌍의 첫 번째 항목을 평가하고 그 중 최소값과 연결된 결과 표현식(두 번째 항목)을 평가하여 결과를 반환합니다. 최소값을 갖는 표현식이 둘 이상이면 첫 번째 최소값이 반환됩니다. 모든 표현식이 결측되고 최종 결과가 지정되지 않은 경우에는 결측값이 반환됩니다. 모든 표현식이 결측되고 최종 결과가 지정된 경우에는 해당 최종 결과가 반환됩니다. 테스트 표현식의 결과는 숫자 값이어야 하지만 결과 표현식은 무엇이든 될 수 있습니다.
두 인수가 모두 true일 때 결과가 1이 됩니다. 그렇지 않으면 결과가 0이 됩니다(Figure A.9). Figure A.7의 계산식은 두 비교가 모두 true인 경우에만 Group 1 운전자 라벨을 적용합니다.
그림 A.7 And 함수 생성
인수 중 하나가 true일 때 결과가 1이 됩니다. 두 인수가 모두 false인 경우 Or 표현식의 결과는 0이 됩니다(Figure A.9). Figure A.8의 계산식은 남성과 13세 이상의 모든 참가자를 Group 1에 할당합니다.
그림 A.8 Or 함수 생성
Figure A.9에서 이미지 왼쪽의 진리표는 두 인수 모두 true 또는 false로 평가되는 비결측값을 가질 때 And( & ) 함수와 Or(| ) 함수의 결과를 보여 줍니다. 이미지 오른쪽 표는 왼쪽 표현식(a)과 오른쪽 표현식(b) 중 하나 또는 둘 다 결측값을 가질 때의 결과를 보여 줍니다.
그림 A.9 And 및 Or 표현식의 결과
인수가 false일 때 결과가 1이 됩니다. 그렇지 않은 경우 Not의 결과는 0이 됩니다. Not 함수를 적용할 경우 모호성을 방지하기 위해 필요하면 괄호를 사용합니다. Not은 0 또는 1만 반환할 수 있으므로 예를 들어 !(weight==64)는 true 또는 false(1 또는 0)일 수 있지만 (!weight)==64는 항상 false(0)입니다. !(weight==64)와 같은 표현식을 weight != 64로 입력할 수도 있습니다.
두 점, 즉 지정된 인수에 해당하는 x1, y1과 x2, y2 사이에서 y 값을 선형으로 보간합니다. 삽입 키를 사용하여 x, y 인수 쌍을 추가로 삽입할 수 있습니다. Interpolate는 x 값에 해당하는 x, y 점의 쌍을 찾고 보간을 완료합니다.
그림 A.10 Interpolate의 예
Step은 Interpolate와 유사하지만 x 및 y 인수보다 작거나 같은 값 중 가장 큰 x 값에 해당하는 y 값을 반환하다는 점이 다릅니다. 즉, 이 함수는 점 사이의 선형 적합이 아니라 step 함수에서 지정된 x에 대해 해당하는 y를 구합니다. Interpolate와 마찬가지로, x 및 y 인수 쌍을 원하는 만큼 추가할 수 있습니다.
그림 A.11 Step의 예
while 조건이 true일 때 body 인수의 문을 반복합니다. init와 next는 반복을 제어합니다.
expr 조건을 반복적으로 테스트하고 expr이 더 이상 true가 아닐 때까지 body를 실행합니다.
Break는 루프 실행을 완전히 중지하고 루프 다음 구문을 계속 실행합니다. Continue는 현재 루프 반복을 끝내고 다음 반복의 루프를 시작합니다.
둘 모두 For, While 및 For Each Row 루프에서 사용됩니다.
실행 중인 스크립트를 즉시 중지합니다.
사용자 정의 함수에서 표현식 값을 반환합니다.