1 つの列に最大値がある行を選択するsummary を使用すると、1 つの列で最大値 (グループによる複数) を見つけることができます。 ただし、元のテーブルのどの行で最大値が発生するかも調べたいと考えています。
簡単な解決策はありますか? ご協力いただきありがとうございます!Re: 1 つの列に最大値がある行を選択するこんにちは。古いスレッドに返信して申し訳ありませんが、関連する例が他に見つかりません。
グループごとに集計し、グループごとに最大の重みを持つ行を選択したいと思います。
要約することはできましたが、それらの行を選択する方法がわかりません。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << clear select;
Summarize( g = by( :age, :sex ), m = Max( :weight ) );
/* How to select those rows summarized by group?
ありがとう
Re: 1 つの列に最大値がある行を選択する<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />素晴らしい解決策です。 まさにこれが私が探していたものです!
Re: 1 つの列に最大値がある行を選択するも使用できます行をどこで取得するか:
あなたの配列= dt <<行を取得します。 ( :列名==ピーク値) ;
行の取得の利点は、a) 2 ステップではなく 1 ステップであること、b) テーブル内で行が選択されていないことです。選択した行が必要な場合は、MOSFETtestEng で示されているアプローチが役に立ちます。
Re: 1 つの列に最大値がある行を選択するこれが 2 年後であることは承知していますが、これは同じ質問でこの投稿を見つけたすべての人に向けたものです。
スクリプトで「選択された行を取得」機能を試してください。
yourarray = dt << Get Selected Rows;
これで、配列「yourarray」には、選択された行番号のリストが含まれるようになります。
最大値を持つ行を見つけるには、次を試してください。
// finds the maximum value in the columnt
peakvalue = Col Max( :columname);
// selects all rows with the maximum value. (dt is the name of the data table.)
dt << Select Where( :columnname == peakvalue);
// stores a list of the row numbers with the maximum value in this array
yourarray = dt << Get Selected Rows;
Re: 1 つの列に最大値がある行を選択するJMP10 を入手して、この問題を再検討しました。列マッチングを使用した「結合」はうまく機能します。テーブルの「更新」はもっと簡単だと思います。
Re: 1 つの列に最大値がある行を選択するFor Each Row() は、大きなテーブルでは非効率的になる可能性があります。
Select Where() の方がおそらく高速になります。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << clear select;
Summarize( g = by( :age ), m = Max( :height ) );
dt<<SELECT where=""></SELECT>
Re: 1 つの列に最大値がある行を選択する脚本は良さそうです。 試してみてまた報告します。
驚いたのは、JMP自体がデータ最大のインデックス(行番号)をどこかに保持していないことです。
ドンRe: 1 つの列に最大値がある行を選択する申し訳ありませんが、その通りです。 答えるのが早すぎました。 上記の間違った投稿を編集します
私が提案したかったのは、「概要」と「更新」を組み合わせてみることができるということです (または「結合」。「更新」が JMP7 テーブル メニューにあるかどうかはわかりません)。
以下は、機能するはずのスクリプトの例ですが、非常に大きなデータ テーブルの場合は効果がない可能性があります。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << clear select;
Summarize( g = by( :sex ), m = Max( :age ) );
For( j = 1, j <= N Items( g ), j++,
For Each Row( If( :sex == g[j] & :age == m[j], Row State() = Selected State( 1 ) ) )
);
Re: 1 つの列に最大値がある行を選択するMS、
ありがとう。 試してみましたが、2 番目の集計テーブルを選択するときに、まだ元のテーブルのすべての行が選択されています。 集計テーブルで 1 つの行 (グループの最大数) を選択すると、グループ内の最初の集計テーブルのすべての行も選択されます。
あなたの指示に正しく従っていることを願っています。 2つ目の集計テーブルの名前は「DataTable By (グループ, データ) By (グループ)」でしょうか?
参考までに、私はJMP7を使用しています。
ドンRe: 1 つの列に最大値がある行を選択するジェフ、
ありがとう。 これは JMP 9 からの新機能のようです。 JMP7を使用しています。 アップグレードをリクエストしても良いと思います。
また、1 つの列で複数の最大値を選択しようとしています。 最大値は、他の列で指定された異なるグループに属します。
ドンRe: 1 つの列に最大値がある行を選択する「行」->「行の選択」->「ドミナントの選択」では、列または列のグループ内の最大値 (または最小値) を持つ行が選択されます。
そうすればあなたが探しているものが見つかると信じています。
ジェフRe: 1 つの列に最大値がある行を選択する[更新] ([テーブル] メニュー) を使用して、一致する列として group columns(s) = group columns(s) および data = max(data) を使用して、元のテーブルとサマリー テーブルを一致させることができます。 最大行数は、追加された NRows 列の欠落していないセルによって示されます。
私の最初の答えは、いい加減な考えに基づいていました...
メッセージの編集者: MS