列の関数と行の状態JMP バージョン 15 のリリース ノートによると、次のようになります。
Col 関数は、Excluded(Row State()) 関数を通じて除外された行を尊重します。
Col Maximum( :height, :sex, Excluded( Row State() ) );
ただし、この構文は機能しないようです。誰かが正しい構文を提案できますか?
データのブレンディングとクリーンアップ実験計画法Re: Col 関数と行の状態ビニングと同じ考え方だと思います。 観測ごとに 1 つの値を別の値 (この場合はグループ値) にマッピングします。 それはゴミ箱かもしれません。 それは中心的な傾向の尺度になるかもしれません。
Re: Col 関数と行の状態わかりました、ありがとう。テーブルの行ごとに列統計を生成するというアイデアはよくわかりませんが、ユースケースはあるはずです。ここでは、ユーザー定義関数を使用して、行の除外を考慮しながら列の統計を計算することにします。
Re: Col 関数と行の状態によるドキュメンテーション、 By 変数が指定されている場合、関数は列数式または For Each Row() で使用する必要があります。
(オプション) 計算する By 変数統計行のグループ全体にわたって。 By 変数をコルうーん、数式または各行について()関数。
この投稿の前半の例のいくつかを確認すると、除外された値を独自の By レベルとして扱っているように見えることに同意します。
Re: Col 関数と行の状態Row() 関数が評価されるときに定義される列式で使用されているようです。
Re: Col 関数と行の状態1 台のコンピュータでは次のように動作します。

そして、もう一方では失敗します。

Re: Col 関数と行の状態ビッグクラスでの作業 (もちろん):
colmaximum(:height,excluded(rowstate()))
これは機能しています。ただし、あるコンピュータでは実行されますが、別のコンピュータでは実行されません。どちらも 15.1.0 を実行しています。
今、私は完全に混乱しています!
スクリーンショットは次の投稿で...
Re: Col 関数と行の状態面白い。 JMP 16 のプレリリース ビルドでは、r=1 と r=2 については正しく動作するようですが、それ以降は正しく動作しません。
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
mw = J(NRow(dt), 2, .);
for(r=1, r<=NRow(dt), r++,
Row() = r;
RowState(Row()) = ExcludedState(1);
mw[r,1] = ColMean(:weight, Excluded(RowState(Row())));
mw[r,2] = ColMean(:weight, Excluded());
RowState(Row()) = ExcludedState(0);
);
AsTable(mw);
dt << Distribution(
Continuous Distribution(
Column( :weight ),
Quantiles( 0 ),
Histogram( 0 ),
Outlier Box Plot( 0 )
),
Local Data Filter(
Add Filter(
columns( Transform Column( "Row", Nominal, Formula( Row() ) ) ),
Where( Transform Column( "Row", Nominal, Formula( Row() ) ) == 1 ),
Display(
Transform Column( "Row", Nominal, Formula( Row() ) ),
N Items( 15 ),
Find( Set Text( "" ) )
)
)
)
);Re: Col 関数と行の状態デイブ、
とても混乱するような。 これは友人のウェンディへの質問だと思います。Re: Col 関数と行の状態解決策をコーディングできます - 私の質問は、特にバージョン 15 で列関数のみを使用して実行できるかどうかについてでした - それがリリース ノートから得た印象です。
Re: Col 関数と行の状態おそらく、尊重するということは、この場合、除外されるのは列統計式の単なる追加の byVar であることを意味しますか?
除外値のない列の最大値が必要な場合は、Col Maximum の代わりに Summarize を使用できますか? 除外された行は無視されるようです。
Names Default To Here(1);
dt =New Table("ExcludeColMax",
Add Rows(6),
Compress File When Saved(1),
New Column("A",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 10, 100, 2, 20, 200]),
Set Display Width(46)
),
New Column("B",
Character,
"Nominal",
Set Values({"A", "A", "A", "B", "B", "B"})
),
New Column("C",
Numeric,
"Continuous",
Format("Best", 12),
Formula(Col Maximum(:A, :B, Excluded())),
Set Display Width(65)
),
Set Row States([0, 0, 6, 6, 0, 6])
);
Write("Looping col max:");
For Each Row(
Show(Col Maximum(:A, :B, Excluded()))
);
Write("\!N\!NOnly col max:");
Show(Col Maximum(:A, :B, Excluded()));
Write("\!N\!NSummarize:");
Summarize(dt, exg = By(:B), exm = Max(:A));
Show(Eval List({exg, exm}));
Show(Max(exm));Re: Col 関数と行の状態v15.2でテストしましたが、問題は同じです。このユースケースでは、列の数式内ではなく、スクリプト内で関数を使用していることに注意してください (列の統計を行に含める理由がわかりません)。
Re: Col 関数と行の状態他に誰かが来たら、この非常に単純な例をここに追加します。

Names Default To Here(1);
New Table("ExcludeColMax",
Add Rows(6),
Compress File When Saved(1),
New Column("A",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 10, 100, 2, 20, 200]),
Set Display Width(46)
),
New Column("B",
Character,
"Nominal",
Set Values({"A", "A", "A", "B", "B", "B"})
),
New Column("C",
Numeric,
"Continuous",
Format("Best", 12),
Formula(Col Maximum(:A, :B, Excluded())),
Set Display Width(65)
),
Set Row States([0, 0, 6, 6, 6, 0])
);Re: Col 関数と行の状態知らせてくれてありがとうございます。これは 15.1 では機能しません。15.2 と比較してみます。
Re: Col 関数と行の状態すぐにテストしたところ、Excluded() のみを使用すると機能するようです (私は 15.2.1 を使用しています)。
Re: Col 関数と行の状態この議論に加えて、Col 関数の動作は奇妙であり、JMP での典型的な動作とは異なるため、予想外で混乱を招くと考えます。
Col 関数は、ローカルとグローバルの両方で、行の除外とフィルタリングを無視します。
これは、分析出力内のローカル フィルタリングが Col 関数では無視され、フィルタリングまたはサブグループによる結果の取得が不可能であるか、実際に取得された結果が正しくないことを意味します。
数式を使用して一部の行を除外する機能は依然として非常に制限されています。
これはユーザーを混乱させたり誤解を与えたりする可能性があるため、これは JMP の問題であると考えています。 JMP チームがこの問題に対処して、Col の機能を他の機能に準拠させることを願っています。
Re: Col 関数と行の状態@Oren_Barilan 、
Col 関数が JMP、プラットフォームの除外機能に従っていないことについての懸念を一万フィートで見るには、Col 関数だけでなく、さらに多くの関数を含める必要があります。単純な SQRT() 関数または SUM() も引数に含める必要があります。除外された行の値を処理する場合、それらも null 値を返す必要があるためです。この場合、行を無視したくない状況にどのように対処しますか?
したがって、私の観点から見ると、JMP はより機能的なアプローチを採用しており、プログラマが必要なあらゆる方法で JMP を利用できるようにしています。
Col Mean( :weight );
データテーブル内のすべての行の平均を計算します。
Col Mean( If( Excluded( Row State( Row() ) ), ., :weight ) )
除外されていない行のみの平均を計算します
Re: Col 関数と行の状態私もジムの意見に同意します。
3 番目のオプションもあります。Excluded を独自の「グループ」として処理します (実際にどのように処理されるかはわかりません)。
Col Mean(:weight, Excluded())

Col 関数に関する私の唯一の「問題」は、除外された行の処理方法が原因で危険な可能性があり、右クリック メニューから簡単に作成できることです。 おそらく、JMP がそれらの式に Excluded() を自動的に含めた (または優先した) 場合、このリスクは軽減される可能性があります。