안녕,
열에서 가장 긴 반복 패턴을 찾는 방법을 설명해 줄 수 있는 사람이 있나요?
예를 들어 다음과 같은 테이블이 있다고 가정해 보겠습니다.

가장 큰 크기의 패턴은 "1 5 6 8 7"이며 이 열에서 3번 나타납니다. 표에는 5번 발생하지만 가장 큰 패턴은 아닌 또 다른 패턴("1 5 6")이 있습니다.
Screening - Explore 패턴으로 시도했는데 가장 많이 중복된 값을 반환하지만 정확한 패턴을 얻을 수 없습니다. 또는 발생 횟수와 함께 여러 패턴이 있습니다.
활성화해야 할 옵션이 있을까요? 아니면 다른 플랫폼을 사용해야 합니까? 아니면 누군가가 JSL 스크립트로 나를 도와줄 수 있다면.
감사해요
안녕 @ruskicar ,
한 가지 가능한 옵션은 말씀하신 대로 Analyze, Screening, Explore 패턴을 통해 액세스할 수 있는 "Explore pattern" 플랫폼을 살펴보는 것입니다.
플랫폼 창에서 "열 1" 옆에 있는 빨간색 삼각형을 클릭하면 "가장 긴 중복 시퀀스 선택" 옵션이 있습니다. 데이터 테이블에서 "1 5 6 8 7"이 아니라 데이터 세트에서 가장 긴 반복 시퀀스인 "1 5 6 8 7 1 5 6" 시퀀스의 2배에 해당하는 16개 행을 강조 표시합니다.
이 답변이 도움이 되길 바라며,
@Victor_G 완벽한.
나는 이 JSL을 작성했고 겹치는 중복을 포함하는 답변이 만족스럽지 않았습니다.
// build a sample table
dtElements = New Table( "elements", New Column( "element", Numeric, setvalues( J( 20, 1, Random Integer( 1, 3 ) ) ) ) );
nr = N Rows( dtElements );
// build key table
maxKeyLen = 12; // too big will be slow, too small will miss something
dtKeys = New Table( "keys", addrows( nr ), New Column( "key", expression, Set Display Width( 239 ) ) );
For( irow = 1, irow <= nr, irow += 1,
maxrow = Min( nr, irow + maxKeyLen );
dtKeys:key[irow] = dtElements:element[irow :: maxrow];
);
// sort key table to put similar together
dtKeys << Sort( By( :key ), Replace Table, Order( Ascending ) );
// get the match length of adjacent rows
// ===========================================
// this code finds two runs of 1,1,1 in 1,1,1,1 <<<<<<<<<< IMPORTANT <<<<<<<<<<<
// ===========================================
dtKeys << New Column( "matchLength" );
For( irow = 2, irow <= nr, irow += 1,
a = dtKeys:key[irow];
b = dtKeys:key[irow - 1];
result = Min( N Items( a ), N Items( b ) );
For Each( {{aa, bb}, i}, across( a, b, Count( "Shortest" ) ),
If( aa != bb,
result = i - 1;
Break();
)
);
dtKeys:matchLength[irow] = result;
);
dtKeys << Sort( By( :matchLength ), Replace Table, Order( Descending ) );
Show( dtKeys:key[1][1 :: dtKeys:matchLength[1]] );
JSL은 식 열 ForEach(Across, Count)를 사용하고 숫자 및 문자 입력을 모두 처리합니다. 그러나 나는 그것이 무엇을 할 것이라고 생각하지 않습니다 @ruskicar 원한다.
아이디어는 다음 N 행에서 빌드된 값의 새 열을 만드는 것입니다. 해당 열을 정렬하면 비슷한 시작 패턴의 실행이 인접해 있습니다.
네, 감사합니다. 이것이 제가 찾던 것입니다. 내가 본 예는 약간 형편 없었지만 대답은 정확합니다
. 빨간색 삼각형이 너무 많아서 해당 옵션을 찾지 못했습니다
.