行にデータが欠落している複数の列にわたって最大値を取得する方法!やあ、
選択した列全体で最大値を取得するデータセットがあるとします。
dt = New Table( "Untitled",
New Column( "a@b;2", Numeric, Set Values( [12, 33, 1] ) ),
New Column( "b", Numeric, Set Values( [2, 11, 2] ) ),
New Column( "c@d;3", Numeric, Set Values( [333, 1, 0] ) )
);
colnames = dt << getcolumnnames;
use_cols = {};
include = {"@"};
For( j = 1, j <= N Items( include ), j++,
For( i = 1, i <= Nitems( colnames ), i++,
If(Contains(colnames[i], include[j]),
insert into (use_cols , colnames[i]))
));
dt << new column("max_col",numeric,formula(Maximum(use_cols)))
max_colに欠落している値が返される理由がわかりませんか? use_colsをループする必要がありますか?
ありがとう!
データ表他のスクリプティングRe:行にデータが欠落している複数の列にわたって最大値を取得する方法!ごめん!これはうまくいきませんでした!Re:行にデータが欠落している複数の列にわたって最大値を取得する方法!あなたの素晴らしい解決策をありがとうtxnelson! あなたは常に詳細に行き、物事を非常に明確に説明するのに役立ちます!Re:行にデータが欠落している複数の列にわたって最大値を取得する方法!Windows PCで実行し、Windows 10を実行している場合、JMPのいくつかのバージョンに戻ってスクリプトを実行しましたが、すべてのバージョンで正しく実行されました。

データに値が欠落していることがあるという2番目の資格は、問題にはならないはずです。Maximum()関数は、欠落している値を処理します。
スクリプトについて詳しく知らないので、考えられる問題を指摘します。max_col列用に作成された数式を見ると、次のように表示されます。

数式はリスト「use_cols」に依存しているため、数式が実行または再実行されるたびに、リストに移動し、「use_cols」の「その時点で」の値を使用して数式に配置します。「use_cols」の値が「 {Name( "a @ b; 2")、Name( "c @ d; 3")} 「、すべてが正常に機能します。何らかの理由でリスト「use_cols」が値を変更した場合、数式が機能せず、値が欠落する可能性があります。あなたが本当に望んでいるのは、式が
Maximum( {:Name( "a@b;2" ), :Name( "c@d;3" )} )
私の経験では、これを行う最も簡単な方法は、新しい列と数式を次のように指定することです。
Eval(Parse("dt << new column(\!"max_col\!",numeric,formula( Maximum(" || char(use_cols) || ")));"));
その結果、式は次のように指定されます。

Re:行にデータが欠落している複数の列にわたって最大値を取得する方法!やあ、
最後のステートメントに「ascolumns」を追加して、変数「use_cols」が列を参照していることをJMPが理解できるようにする必要があります。
dt << New Column( "max_col", numeric, formula( Maximum( as columns( use_cols ) ) ) );
Re:行にデータが欠落している複数の列にわたって最大値を取得する方法!追加するのを忘れた場合、列に欠落した値が含まれることもあります。 データテーブルを作成したときに、それらを追加する方法がわかりませんでした。