列の行をループして全体の数を見つける列内の現在のエントリのカウント数を見つけようとしています。 以下の関数は動作しますが、遅いようです。 スクリプトの実行時間を改善するための提案はありますか?
JMP14、JMP16
<行ごと(Print(Col Number( :ColName, :ColName )))>
私の提案:最初に、:ColNameのエントリを「キー」として追加し、エントリが重複している場合、つまりキーが重複している場合、または新しいエントリの場合は値を1に設定して別のキーを追加することによって値(Value++)を増やすことによって連想配列を構築すると思います。もっと良い方法でしょう。 次に、行をループしてその「値」の数を見つけることができます。
自動化とスクリプト作成Re: 列の行をループして全体の数を確認する行をループする特別な理由はありますか? 同様のタスクを実行するには、表作成または要約テーブルを使用できる可能性が高くなります。

サマリー + スタックテーブル

Re: 列の行をループして全体の数を確認するここでは、あなたが望んでいることを実現するためのいくつかの方法を紹介します。
Names Default To Here( 1 );
dt = Current Data Table();
Summarize( dt, items = by( :colName ) );
countOfUniqueValues = N Items( items );
// or
countOfUniqueValues = N Items( Associative Array( :colName ) << get keys );
Re: 列の行をループして全体の数を確認する私は列 ColName の特定のエントリごとの行数を示す、より大きなデータ テーブル (dt) を要約 (dt_summary) しています。
dt_summary = dt << Summary( Group( :ColName ), Freq( "None" ), Weight( "None" ) );
ここで、元のテーブル (dt) 行を反復処理し、現在の行のサマリー テーブルから行数を取得して、10 (出現数) を超えているかどうかを確認したいと思います。
概要表 (身長ごとにグループ化):

したがって、最初の行にいて、高さは 59、オカレンスは 2 であるとします。現在のデータ テーブル (dt) の新しい列 (height_qty) にその情報を入力したいとします。
Re: 列の行をループして全体の数を確認する最も簡単な解決策は、単純に要約テーブルを元のテーブルにマージすることです。
テーブル => 更新
プラットホーム
names default to here(1);
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Big Class.jmp" );
dt_summary = dt << Summary( invisible, Group( :height ), Freq( "None" ), Weight( "None" ) );
dt_summary:N Rows << set name("height_qty");
dt << Update(
With( dt_summary ),
Match Columns( :height = :height )
);
close( dt_summary, nosave );Re: 列の行をループして全体の数を確認する早速のご協力に本当に感謝しています、ジム。 期待どおりに動作し、実行時間はほぼ 1 分から 2 秒に短縮されました。