Jim & MS에게 감사드립니다. 훌륭하게 작동합니다!
열 수식을 원하면 이것이 작동합니다. 정렬과 무관합니다.
Local( {L = Associative Array( :Label ) << get keys}, Loc( L, :Label ) )
열 수식 없이 JSL에서 동일한 접근 방식을 사용할 수 있습니다.
dt = Current Data Table();
dt << New Column( "Rank Unique", continuous );
L = Associative Array( :Label ) << get keys;
For Each Row( :Rank Unique = Loc( L, :Label ) );
dt = current data table();
dt:Rank << delete formula;
이를 수행하는 몇 가지 방법이 있습니다....(내가 생각할 수 있는 것은 이른 아침에)
- 요약 테이블을 사용하여 순위 생성
- 테이블 실행==>요약
- 레이블 열로 그룹화
- 출력 데이터 테이블이 낮음에서 높음으로 정렬되었다고 가정하고 "Rank"라는 새 열을 만들고 수식을 지정합니다........Row()
- 테이블==>업데이트를 실행하여 요약 테이블을 레이블 열과 일치하는 원본 테이블에 다시 조인합니다.
- 새 순위 수식 열 만들기
- 레이블로 데이터 정렬
- 수식을 사용하여 순위라는 새 열을 만듭니다.
If( Row() == 1,
count = 1,
If( :Label != Lag( :Label ),
count
++)
);
count;
- 열 정보로 이동하여 열이 생성된 후 제거해야 합니다.그 이유는 공식이 데이터의 순서와 데이터의 완성도를 기반으로 하기 때문에 데이터가 변경(정렬 등)되면 공식이 다시 실행되어 순위가 변경될 수 있기 때문입니다.
열의 순위를 고유하게 지정하기 위해 새 열을 계산하고 싶습니다. 다음은 내가 달성하려는 출력 예입니다. 하지만 JSL 순위 공식을 사용하면 내가 원하는 것을 달성하는 데 도움이 되지 않습니다. 누구든지 나에게 조언을 해주실 수 있나요?
내가 사용하는 공식은 Col Rank(:Label) 입니다.
| 상표 | 계급 | 내가 원하는 것 |
| NVM_VMAX_PRG_EVENR2_DCMP[1],80376,최대 | 1 | 1 |
| NVM_VMAX_PRG_EVENR2_DCMP[1],80376,최대 | 2 | 1 |
| NVM_VMAX_PRG_EVENR2_DCMP[1],80376,최대 | 삼 | 1 |
| NVM_VMAX_PRG_EVENR2_DCMP[1],81999,최대 | 4 | 2 |
| NVM_VMAX_PRG_EVENR2_DCMP[1],81999,최대 | 5 | 2 |
| NVM_VMAX_PRG_EVENR2_DCMP[1],81999,최대 | 6 | 2 |
| NVM_VMAX_PRG_EVENR2_DCMP[1],86491,최대 | 7 | 삼 |
| NVM_VMAX_PRG_EVENR2_DCMP[1],86491,최대 | 8 | 삼 |
| NVM_VMAX_PRG_EVENR2_DCMP[1],86491,최대 | 9 | 삼 |
이 문제는 오래전에 해결되었지만, 어제 해결책을 찾았는데 혹시 도움이 될까 싶어 공유합니다. 다음 수식을 사용하여 새 수식 열을 만드세요.
Col Maximum(
Col Rank(
If( Row() == Col Minimum( Row(), :Label ),
:Label,
.
)
),
:Label
)
기본적으로 이 함수는 먼저 원래 열의 첫 번째 레이블에 해당하는 행의 레이블을 포함하고, 나머지는 "."로 시작하는 새 배열을 생성합니다. 그런 다음 각 레이블의 순위를 요청하면 레이블 자체 대신 순위 레이블이 포함된 또 다른 배열이 생성됩니다. 마지막으로 해당 레이블이 있는 모든 행의 순위를 포함하는 배열이 출력되고, 이것이 수식 열에 포함됩니다.
제 경우에는 다른 열에서 가장 높은 값을 기준으로 데이터 집합의 순위를 매기려고 했습니다. 예를 들어, 그룹, 집합, 시간, 값 열이 있는 경우, 시간 경과에 따라 관찰된 가장 높은 값을 기준으로 그룹 내에서 집합의 순위를 구하고 싶었습니다. 다음과 같은 수식이 효과적이었습니다.
Col Maximum(
Col Rank(
If ( Row() == Col Minimum( Row(), :Group, :Set),
Col Maximum( :Value, :Group, :Set ),
.
),
:Group,<BR /> <
<TIE></TIE> ),
:Group, :Set
)
이것이 가장 좋은 방법인지는 모르겠지만, 효과가 있고 ChatGPT에서는 해결책을 전혀 제시하지 못했으므로, 어쩌면 누군가에게 도움이 될 수도 있을 겁니다.