「where」条件でCol Maximum Formulaを使用するにはどうすればよいですかこんにちは、他のすべての国へのベンチマークとして新しい列を策定したいという問題があります。 その国の行がさらにある場合は、その最大値をベンチマークとして使用したいと考えています。 明確にするために、以下の例を参照してください。
データの種類は次のようになります。
国 値の期間
A10 201301
A30 201301
B20 201301
C 50 201301
D 40 201301
私が達成したいこと(セル式で):最大列(:値、:期間、:国)どこで :country == "A"
出力:
国 値 期間 ベンチマーク
10 201301 30
A 30 201301 30
B 20 201301 30
C 50 201301 30
D 40 201301 30
ご覧のとおり、A 国のみの最大値をベンチマークしたいと思います。
Col Maximum (:value, :period, :country == "A") を試したところ、「50」が返されます
Col Maximum (:value, :period, :country) と Col Maximum (:value, :period, :country == "A") は両方とも "50" を返します
これには簡単な解決策があると確信しています!
皆さんが助けてくれることを願っています!
どうもどうも!
Re: "where" 条件で Col Maximum Formula を使用するにはどうすればよいですか興味深い質問です - 答えを待っていますか?
を制限する方法について同様の質問がある一連の投稿があります。列 ... 集計特定のサブセットに機能します。
(主に: 除外されていない行のサブセットに制限します)
https://community.jmp.com/t5/Discussions/Compute-Column-Mean-while-restricting-observations-used/mp/10377#M10055
https://community.jmp.com/t5/Discussions/JMP10-Col-Max-and-Col-Min-functions-returned-the-data-from/td-p/10555
https://community.jmp.com/t5/Discussions/Col-Functions-and-Row-States/td-p/351705
アイデア:
平均身長に関心がある場合は、すべての行を集計するか、男性と女性のエントリを別々に集計できます。
2 番目のソリューションは、最初のソリューションとほぼ同じくらい簡単です。追加の GroupBy 変数を使用して、必要なデータと不要なデータを分割するだけです。
ただし、ユーザーが追加で必要とすることがよくあるもの:値は、それぞれのすべての行に表示されます (つまり、女性の場合も)。
[元の投稿のベンチマーク コラムの例は、そのような動作が理にかなっている理由を示しています。]
GroupBy を使用すると、正しい値を簡単に取得できますが、それらをすべての行に分散する方法が必要です。
後ろにルックアップテーブルのようなものがあれば列 ... 集計関数、関数は同じ識別子を使用します
1) 集計のために行を異なるグループに分割する ("M" / "F"):
ジュディは女性です。ジュディの行の体重は女性の平均体重
2) ルックアップ テーブルからエントリを読み取るときのインデックスとして ("M" / "F"):
Judy は女性です。新しい列には次の内容が含まれている必要があります女性の平均体重ジュディの列に
したがって、識別子が同じであるため (平均 1)、男性と女性は同じ値を取得するか、識別子が異なるため (平均 2) 異なる値を取得します。
したがって:
JmpユーザーできるGroupBy 機能を使用して、次の方法で計算から値を削除します。
-計算するサブグループごとに異なる値
- 不要な結果をダンプします
しかし、それから彼は得る
-得るサブグループごとに異なる値
無料で - 彼がこのオプションを注文しなかったとしても (OK、コードは別の話をしています - しかし、ユーザーが何を望んでいたか考えてみましょう) 
ありますか一行コマンド平均計算から女性を削除しますが、値を「女性」でそれぞれの行に書き込みますか?
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column("mean1", Formula(Col Mean(:weight, :age)));
dt << New Column("mean2", Formula(Col Mean(:weight, :age, :sex)));
dt << New Column("mean2", Formula(If(:sex=="M", Col Mean(:weight, :age, :sex))));
dtM = dt << subset( Rows( dt << get rows where( :sex== "M" ) ), selected columns( 0 ));
dtM << New Column("mean_M", Formula(Col Mean(:weight, :age)));
dt << Update(
With( dtM ),
Match Columns(:age = :age ),
Add Columns from Update Table( :mean_M ),
Replace Columns in Main Table( None )
);
Re: "where" 条件で Col Maximum Formula を使用するにはどうすればよいですかありがとう。Re: "where" 条件で Col Maximum Formula を使用するにはどうすればよいですかCol Maximum() は、行ごとの分離結果が出力である式でのみ実行可能です。必要なことを行うには、Summarize() 関数を使用します。
見る:
ヘルプ==>スクリプト インデックス==>要約
Re: "where" 条件で Col Maximum Formula を使用するにはどうすればよいですかハイマーク、
は、年齢または性別ごとに最大体重を取得しようとしましたが、次のスクリプトでは 1 つの値しか生成しませんでした。
年齢別では、6 つの異なる年齢がありました。それぞれについて、各年齢の最大重量を計算したいと思います。
Names Default To Here( 1 );
Clear Log();
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
max_weight_by_age = Col Max( :weight, :age );
max_weight_by_sex = Col Max( :weight, :sex );
Re: "where" 条件で Col Maximum Formula を使用するにはどうすればよいですかこの数式を Big Class サンプル データ テーブルの新しい列に追加できます。
Col Max( :weight, :age )
Re: "where" 条件で Col Maximum Formula を使用するにはどうすればよいですかハイマーク、
col Max を使用するときに を使用する方法の例を教えてください。
ありがとう。Re: "where" 条件で Col Maximum Formula を使用するにはどうすればよいですか[ヘルプ] > [スクリプト インデックス] > [関数] を参照してください。

Re: "where" 条件で Col Maximum Formula を使用するにはどうすればよいですかありがとう、ジム、私は要約だけを意味していました。 私がそれを行う方法は次のとおりです(2つのjslコマンド):
列を集計し、値 (列の最小/最大/またはその他の統計) を使用して新しいテーブルを作成します。
次に、行エントリを照合することにより、要約テーブルを使用してメイン テーブルを更新します。
Max col() コマンドに、一意の列値を識別し、この余分な手順の必要性を排除できる条件付きオプションがあるかどうかに興味がありました。 (余分なテーブルと2つの余分なステップがなくなります)。
あなたの助けに感謝。
Re: "where" 条件で Col Maximum Formula を使用するにはどうすればよいですか私は通常、Summary Platform ではなく Summarize() 関数を使用して、列内のどのレベルが見つかったかを簡単に判断します。次に、そこから、仕事を完了するために必要な数式を生成するだけです。
Re: "where" 条件で Col Maximum Formula を使用するにはどうすればよいですか国列に複数の名前があり、考えられるすべての値がわからない場合を考えてみましょう。 それを行うために、このクエリをどのように調整できますか。
要約テーブルを作成してからテーブルを更新することでそれを行うことができますが、それは非効率的な方法のようで、このような単一のステップで実行できるかどうか興味がありました.
前もって感謝します。
Re: "where" 条件で Col Maximum Formula を使用するにはどうすればよいですか返事が遅れて申し訳ありません! 解決策をありがとう!Re: "where" 条件で Col Maximum Formula を使用するにはどうすればよいですかあなたのニーズを述べた方法を考えると、複数のエントリがある国を知っていると仮定します。
dt = Current Data Table();
rowperiod = :Period[Row()];
Max(
:Value[dt << get rows where(
:Country == "A" & :period == rowperiod
)]
);