列内で最も頻繁に出現する項目を数えるJMPの列の行数から、最も頻繁に出現する項目を簡単に特定したいのですが、一意のエントリは簡単に特定できます。そこからカウントを取得するにはどうすればよいでしょうか?
dt = Current Data Table();
summarize( lotz = by(:LOT));
自動化とスクリプトRe: 列内で最も頻繁に出現する項目を数えるこれは、最も頻繁に発生する同点の可能性を考慮しています。
Names Default To Here( 1 );
dt = Data Table( "Big Class" );
dt << Add Rows( {:name = "BARBARA", :age = 13, :sex = "F", :height = 100, :weight = 79} );
Summarize( namez = By( :name ) );
numberz = Transform Each( {v, i}, namez, Length( Where( dt, :name == v ) ) );
max_num = Max( numberz ); //2
big_name = namez[Where( numberz == max_num )]; //{"BARBARA", "ROBERT"}Re: 列内で最も頻繁に出現する項目を数える配信プラットフォームによりモードが提供されます。

要約統計段落の赤い三角の下にあります。選択するだけです。
概要統計をカスタマイズする

表示したい追加の統計情報を選択します

Re: 列内で最も頻繁に出現する項目を数える列の式を使用する場合:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
New Column( "N by age",
Formula( Col Number( 1, :age ) )
)
そして勝者を決定します:
New Column( "max N by age",
Formula( Col Number( 1, :age ) == Col Max( Col Number( 1, :age ) ) )
)
あるいは、Summarize を使用することもできます。
Summarize( namez = By( :age ), cnt = count(:age) );
または表/要約:
Data Table( "Big Class Families" ) << Summary(
Group( :age )
);
Re: 列内で最も頻繁に出現する項目を数える見た目は良いスクリプトですが、何らかの理由で、すべてに対して 5 という数値が与えられます。
ありがとう
Re: 列内で最も頻繁に出現する項目を数える要約の提案は良いですね。2つの独立したリストが得られます。これを何らかの方法で連想配列にできれば、最大値の「cnt」を使って関連付けられた「namez」値を識別できるでしょう。
Re: 列内で最も頻繁に出現する項目を数えるこれを試してみましたが、うまくいったようです。
Summarize( namez = By( :LOT ), cnt = count(:LOT) );
keys = namez;
values = Eval List(cnt);
AA = Associative Array(keys, values);
For( g = 1, g <= N Items( AA ), g++,
If(values[g] == Max(cnt), mainLOT = keys[g]));Re: 列内で最も頻繁に出現する項目を数える私は通常、Summary Platform を使用します (使用方法はユースケースによって異なります: 同点の場合、カウントが必要かどうか、欠損値をどのように処理するかなど)
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt_summary = dt << Summary(
Group(:sex),
Freq("None"),
Weight("None"),
output table name("res"),
Private
);
// Using Loc Max
max_row = Loc Max(dt_summary[0, "N Rows"]);
max_val = dt_summary[max_row, 1];
show(max_val);
// Sorting
dt_summary << Sort(By(:N Rows), Replace Table, Order(Descending));
my_val = dt_summary[1, 1];
show(my_val);
Close(dt_summary, no save);
モード機能を使うだけでも十分かもしれません
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
val = Mode(dt[0, "sex"]);
また、他のオプションも多数あります (このスレッドで既に確認できるように)。
Re: 列内で最も頻繁に出現する項目を数えるジャルモ
素晴らしい!これでうまくいきました。数値以外の値も含まれています。あと必要なのは、欠損データを無視するようにすることだけです。
dt = Current Data Table();
val = Mode(dt[0, "process"]);
Re: 列内で最も頻繁に出現する項目を数えるこの調整を行ったところ、成功したようです。
dt = Current Data Table();
full_proc_rows = dt << get rows where( !Is Missing( :process ) );
proc_val = Mode(dt[full_proc_rows, "process"]);