こんにちは、
列内で最も長く繰り返されるパターンを見つける方法を説明してくれる人はいますか?
たとえば、次の表があるとします。

最も大きいサイズのパターンは「1 5 6 8 7」で、この列に 3 回出現します。表には別のパターン (「1 5 6」) があり、これは 5 回出現しますが、最大ではないことに注意してください。
スクリーニング - パターンの探索を試してみましたが、どの値が最も重複しているかは返されますが、正確なパターンを取得できません。または、発生回数を含む複数のパターンを取得できません。
有効にすべきオプションがあるのでしょうか? それとも、他のプラットフォームを使用する必要があるのでしょうか? あるいは、誰かが JSL スクリプトで私を助けてくれるでしょうか。
ありがとう
やあ@ruskicar 、
考えられるオプションの1つは、プラットフォームの「パターンの探索」を調べることです。これは、あなたが言及したように、分析、スクリーニング、パターンの探索からアクセスできます。
プラットフォーム ウィンドウの「列 1」の横にある赤い三角形をクリックすると、「最長の重複シーケンスを選択する」オプションが表示されます。 「1 5 6 8 7」ではなく、データセット内で最も長い繰り返しシーケンスであるシーケンス「1 5 6 8 7 1 5 6」の 2 倍に対応する、データテーブルで 16 行が強調表示されます。
この回答がお役に立てば幸いです。
@ビクター_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 は Expression 列 ForEach( Across, Count ) を使用し、数値入力と文字入力の両方を処理します。 しかし、私はそれが何をするかはまったくないと思います@ruskicar望む。
アイデアは、次の N 行から構築された値の新しい列を作成することです。 その列を並べ替えると、類似した開始パターンの実行が隣接します。
はい、ありがとう、これは私が探していたものです。 例は少しお粗末でしたが、答えは正しいです:)。 赤い三角形が多すぎるので、そのオプションを見つけられませんでした:)。