안녕하세요, JSL 전문가 여러분,
1열에서 2번째 max, 3번째 max 등의 값을 찾는데 큰 어려움을 겪고 있습니다.
아래 열의 경우 상위 5개의 최대 값을 식별하고 해당 값을 별도의 열에 표시하려고 합니다.
col max만 찾을 수 있는 것 같은데, 2nd max, 3rd max 등을 찾는데 어려움이 많습니다.
이 솔루션에 대한 표준 공식이 있습니까?
감사해요
(100,
232,
343,
121,
100,
132,
100,
100,
100,
100,)
이전 버전의 JMP를 사용 중일 수 있습니다. 해당 시나리오에 대해 보여준 공식을 수동으로 입력하면 작동합니까? 이것은 당신을 위해 일할 수 있습니다--변수별 지원이 열 함수에 추가 된 때를 기억할 수 없습니다 ... 나는 그것이 그들 중 많은 사람들에게 JMP 14였을 것이라고 생각합니다.
건배,
브래디
정말 감사합니다.
사례 1의 경우 내 JMP에 분포 아래에 순위가 없는 것 같습니다. 사진에 표시된 것처럼 처음 6개 옵션만 있습니다.
수식 열 > 분포 > 순위(역순).
사례 3이 현재 문제에 대한 더 나은 솔루션인 것 같습니다. 도움을 주셔서 감사합니다.
안녕,
이것은 "최대"가 의미하는 것과 테이블을 정렬할 의향이 있는지 여부에 따라 다릅니다. 몇 가지 일반적인 경우를 설명하고 그 중 하나가 사용 사례를 다루기를 바랍니다.
사례 1: "최대"는 중복을 포함하여 원래 값의 정렬된 데이터 세트에서 위치를 의미합니다.
이를 위해 내장 변환을 사용할 수 있습니다. 관심 있는 열의 데이터를 마우스 오른쪽 버튼으로 클릭하고 새 공식 열 > 분포 > 순위(역순)를 선택합니다.
생성된 수식을 클릭하면 테이블 정렬 여부에 관계없이 작동하는 다음이 표시됩니다.
(Col Number( :Col1 ) - Col Rank( :Col1 )) + 1

사례 2: "최대"는 정렬된 UNIQUE 값 집합의 위치를 의미합니다(중복 없음). 데이터 사전 정렬을 원하지 않습니다.
***참고: 연관 배열에 의존하기 때문에 이 접근 방식은 정수가 포함된 숫자 데이터에서만 작동합니다.
복잡하고 비싼 공식을 사용할 수 있습니다.
Loc(
Matrix(
Reverse(
Associative Array( (:Col1 << get data table) :: col1 << getvalues ) << get keys
)
),
:Col1
)
이 수식은 다음을 수행합니다.
1) 관심 있는 열에서 값을 가져와 중복을 제거하는 연관 배열로 전달합니다.
2) 연관 배열 키를 가져오고(기본적으로 낮은 순서에서 높은 순서로) 순서를 바꿉니다.
3) Loc() 함수를 사용하여 역결합 배열 키의 행렬 내에서 주어진 행의 위치를 보고합니다.
사례 3: 사례 2와 같지만 관심 열을 기준으로 사전 정렬(내림차순)할 수 있습니다.
이 경우 자체 참조 공식이지만 더 간단하고 효율적으로 사용할 수 있습니다.
If( Row() == 1,
1,
Lag( :Formula3 ) + (Lag( :Col1 ) != :Col1)
)
아래에서 첫 번째 공식과 다음 두 공식의 차이점을 볼 수 있습니다. 다시 말하지만, 세 번째 공식만 테이블 정렬에 의존합니다.

이것을 시도하고 싶다면 아래 스크립트를 실행하십시오. 처음에는 정렬되지 않은 것처럼 보이지만 1초 동안 일시 중지한 후 col1을 기준으로 정렬합니다. 이때 세 번째 공식의 결과는 두 번째 공식의 결과와 일치합니다.
dt = New Table( "Example",
Add Rows( 20 ),
New Column( "Col1", <<SET values=""></SET>
건배,
브래디