며칠 전, 고객에게 JMP에서 조회 테이블을 사용하는 방법을 보여 주었고이 정보를 모든 사람과 공유하는 것이 좋습니다.
이미 다른 곳에서 조회 테이블을 사용 해본 사람들은 자신이 얼마나 편리 할 수 있는지 알고 있습니다. 처음으로 사용한 적이없는 사람들을 위해 먼저 간단한 예를 살펴 보겠습니다. 숫자 등급을 기준으로 문자 등급 지정.
우리가 숫자와 문자 등급간에 다음과 같은 일치를한다고 가정 해보자.
E : x <60
D : 60 <= x <70
C : 70 <= x <80
B : 80 <= x <90
A : 90 <= x
우리는 자동으로 문자 성적을 아래의 숫자 등급에 할당하고 싶습니다. 그러나 어떻게해야합니까?

가장 일반적인 방법은 IF 절과 함께 수식 열을 사용하는 것입니다. 명령문은 발생한 순서대로 평가되고 명령문이 "참"으로 평가되면 실행이 중지되므로 절을 염두에두고 작성해야합니다.


이 기술은 완벽하게 작동하지만 불행히도 특정 경우에 번거로울 수 있습니다.
- 몇 가지 값이 아닌 많은 값의 목록을 고려해야 할 경우 어떻게됩니까? 긴 IF 절을 작성하는 것은 지루하고 오류가 발생하기 쉽습니다.
- 값 목록이 미리 알려지지 않았지만 실행 시간 중에 결정되면 어떻게 될까요? 우리는 코드를 동적으로 작성하기 위해 JSL을 사용하여이 문제를 처리 할 수 있지만 대부분의 사람들은 가능한 경우이를 피하는 것을 선호합니다.
다행히 강력한 매트릭스 함수 인 Loc Sorted ()를 사용하여 이러한 문제를 해결할 수 있습니다.
Loc Sorted ()는 어떻게 작동합니까?
- Loc 정렬 ( 엑스 , 와이 )는 행렬 엑스 , 낮은 곳에서 높은 곳으로 분류 와이 행렬 또는 스칼라 유형 중 하나 일 수 있습니다.
- Loc Sorted ()는 인덱스 (또는 인덱스)를 반환합니다. 와이 행렬입니다.) 마지막 값의 엑스 보다 작거나 같은 와이 .
예를 들어,이 코드를 실행하면 [3]의 결과를 얻을 수 있습니다. 14는 이전에 저장 한 숫자보다 크거나 같기 때문입니다. 삼 의 위치 엑스 행렬에 저장되어있는 수보다 적지 만 4 번째 위치 엑스 매트릭스:
x = [0, 5, 10, 15, 20, 25];
y = 14;
쇼 (loc 정렬 (x, y));

마찬가지로이 코드를 실행하면 [4,6,6,1]의 결과를 얻을 수 있습니다.
x = [0, 5, 10, 15, 20, 25];
y = [17, 25, 50, 3];
쇼 (loc 정렬 (x, y));

최소값은 엑스 행렬은 다음 중 가장 작은 값이어야합니다. 와이 당신은 1을 반환하기 때문에 발생할 것으로 예상됩니다. 와이 모든 값보다 작은 값 엑스 값 :

문자 등급 예제에서 sort ()를 사용하여 { "E", "D", "C", "B", "A"} 목록에서 점수를 선택할 수 있습니다.

고려해야 할 카테고리가 몇 개 밖에없는 경우이 방법이 유용합니다. 그러나 전체 테이블에 옵션이 가득 찼을 때 또는 단일 값을 조회하지 않고 여러 값을 찾아서 함께 사용해야하는 경우에는 어떻게됩니까?
다행히도, 이것은하기 쉽습니다. 우리가 필요로하는 것은 정보를 담을 여분의 테이블입니다. 세금 표에서 세금을 계산하는 것은 그러한 사례의 고전적인 (그리고시기 적절한) 예입니다.
*** 경고 : 저는 세금 전문가가 아닙니다. 나는 TV에서 하나도 연주하지 않는다. 2013 년 세금 표를 국세청 .
오늘의 예에서, 설명 목적으로 만 사용되며 세금 관련 조언으로 해석되어서는 안되며 세금 전문가가 아닙니다. , 우리는 아래의 표를 사용할 것입니다. 온라인에서 찾았습니다. .

우리의 목표는 위 표와 과세 대상 소득 금액을 고려하여 빚진 세금을 계산하는 것입니다.
먼저이 정보를 데이터 테이블에 저장해야합니다 (첫 번째 열의 내용을 Loc Sorted ()가 작동하는 방식 때문에 $ 1 씩 낮춤). 예제를 따라하려면 다음 이름을 사용하십시오. 테이블과 열 또는 JMP 파일 교환에서 예제를 다운로드하십시오. (다운로드하려면 무료 SAS 로그인 필요).
테이블 이름 : 결혼 한 파일 공동성 테이블
열 이름 :
- PreTax (모든 괄호 안의 소득에 대한 세금의 합계)
- 이자율 (소득의 마지막 "블록"에 대한 세율)

위의 표를 사용하여 다음 표에서 과세 소득에 대한 세금을 결정하고자합니다. 결혼 한 파일 공동성 테이블 :

Loc Sorted ()와 위의 두 테이블로 무장하여 시작할 준비가되었습니다.
소득표에서 우리는 열> 새 열 ...

우리는 열 이름으로 "Tax"를 입력하고 "Currency"를 형식으로 선택합니다.
열 속성 드롭 다운에서 "수식"을 선택하면 수식 편집기가 나타납니다.
실제로 프로그램을 열 수식에 입력 할 수 있다는 것을 알고 있습니까? 이것이 우리가 여기서 할 일입니다. 스크립트가 3 줄 밖에없는 경우에도이 작업을 수행하는 가장 쉽고 오류가 적은 방법은 스크립트 창에서 복사하여 붙여 넣는 것입니다.
그래서, 스크립트 창을여십시오 ( 파일> 새로 만들기> 새 스크립트 ) 다음을 입력하십시오.

1 호선 변수를 가리킨다. dt 세금 표에
- 실제로 수식이 상주 할 소득표가 아닌 세금표의 열을 사용하고자 할 때마다 해당 열 이름 앞에 dt .
3 호선 주어진 소득 금액에 대해 세금 표의 어떤 행을 사용할 것인지 결정합니다.
- 우리는 Loc Sorted ()를 세금 표의 cuts 칼럼의 모든 값을 사용하여 호출합니다. 엑스 , 과세 소득 표의 현재 행에있는 값을 와이 .
- 이 호출의 결과를 다음과 같이 저장합니다. 까치발 , 우리는 세금 표에서 필요한 행을 찾기 위해 사용할 것입니다.
- 예를 들어, 첫 번째 소득 값의 경우 41,196.47 달러가 세 번째 테이블의 행 2와 3에 포함 된 컷오프 사이에 있으므로 Bracket은 2와 같으므로 세율표에서 행 2를 사용하여 세금을 계산하게됩니다.
5 호선 세금을 계산합니다. 예를 들어 41,196.47 달러의 첫 번째 소득 가치를 사용하는 경우 :
- dt : PreTax [Bracket] 세금 테이블의 PreTax 열의 해당 행에 저장된 값입니다. 나열된 첫 번째 소득 금액의 경우, 이것은 41,196.47 달러에 가장 가까운 컷오프 이하 소득에 대한 모든 세금의 합계이지만 초과하지는 않습니다. (이 경우 1,785 달러입니다.)
이 금액에 다음 상품을 추가해야합니다.
- dt : MargRate [대괄호] , 41,196.47 달러의 세금이 부과되는 가장 큰 괄호 안에있는 한계 세율 (이 경우에는 0.150),
- : 과세 소득 - dt : cuts [Bracket] ,이 비율로 과세되는 소득 금액입니다 (이 경우 $ 41,196.47 - $ 17,850입니다.)
스크립트 창에 스크립트를 입력하면 모든 항목을 선택하고 복사하여 수식 편집기의 빨간색 상자에 붙여 넣습니다 (지금까지 아무 것도 포함되지 않았습니다).

수식 편집기를 닫으려면 "OK"를 누르고 열 속성 편집기를 닫으려면 "OK"를 누르면 소득표의 각 행에 대해 세금이 계산되고 세금이 수식임을 "+"아이콘으로 확인합니다 기반; 수식을 재평가 할 때마다 조회 테이블을 열어야합니다. (이 때 수식을 제거하려면 수식 편집기가 열릴 때 "+"아이콘을 클릭하고 "지우기"를 선택한 다음 "확인"을 클릭하십시오.)

스크립팅을 선호하는 사용자에게는 솔루션이 비슷합니다. 아래 스크립트에서 수식없이 테이블에 값을 직접 작성했지만 << New Column () 메시지에서 formula () 옵션을 사용하면 올바르게 작동합니다.

그리고 거기에 당신이 가지고 있습니다. JMP에서 룩업 테이블을 사용하는 것이 전부입니다! 당신이 많은 고객들과 같다면, 당신은 그들의 사용을위한 많은 기회를 보게 될 것입니다.