列の選択を使用して for ループ内のテーブルにデータ値を追加する方法 ターゲット データの新しい全体的なデータ テーブルを作成する場所For( date = date_array << First, !Is Empty( date ), date = date_array << Next( date ), //looping through date_array's keys is clunky but done this way in JMP
dt << Select Columns( :Timepoint, :Target Channel, :Run date ), Where(:Timepoint == date);
dt << Subset( ( Selected Rows ), Output Table Name( "Subset" ));<BR />);
for ループの反復ごとに、列基準 (:Timepoint == LBCM) で指定されたデータを徐々に追加し、ループが終了したときに最後に結合データ テーブルに結合し、結果を表示したいと考えています。 .
今のところ、どこにも何も追加されていません。結局、新しいデータテーブルはまったくありません。
サンプル ID に基づいて、これらすべてを別の for ループ内にも入れていますが、ここにそれを追加すると、今のところ複雑すぎるだけだと思います。
JMP コミュニティ フォーラムで見つけた他のすべての例は非常に複雑で、データの配列を作成してデータ テーブルなどに転送しているように見えます。 ここでの解決策をできるだけシンプルにしたいと考えています。 もちろん、返信が来たら会話に貢献しますが、今のところ完全に立ち往生しています。
ご協力ありがとうございました、
マイク
分析データ表他のスクリプティングあRe: Select Columns Where を使用して for ループでテーブルにデータ値を追加する方法 ターゲット データの新しい全体データ テーブルを作成する場所列の部分を選択すると、おそらく非常にわずかな効率の向上になりますが、ほとんどの場合、コードが読みやすくなります (私の意見では)。
ループ内にデバッグ出力を追加して、サブセット化するものがあるかどうかを確認しましたか:
For(i = 1, i <= N Items(IDs), i++,
ID = IDs[i];
date_array = Associative Array({"date1", "date2", "date"}, {{}, {}, {}});
For(date = date_array << First, !Is Empty(date), date = date_array << Next(date),
dt << Select Where(:Timepoint == date);
Show(N Items(dt << Get Selected Rows));
dt_ld4 << Subset(Columns({"Timepoint", "Target Channel"}), Selected Rows, Output table name("Subset"));
);
);追加したShow(N Items(dt << Get Selected Rows));行が選択されているかどうかがわかります。 また、同様の名前の列がある場合、ID を変数名として使用するのは快適ではありません (うまくいくかもしれませんが、念のためにそのような名前は避けます)。 currentID などに置き換えます。
この時点で、この問題を部分的に解決するのに役立つトピックが 1 つあれば、より簡単になると思います。私たちにとって非常に役立つことの 1 つは、サンプル データセットを用意することです。 データセットは大規模である必要はなく、匿名化または完全に偽のデータにすることができますが、それでも現実的である必要があります (列のデータ型は同じで、さまざまなケースをテストする可能性があります)。
Re: Select Columns Where を使用して for ループでテーブルにデータ値を追加する方法 ターゲット データの新しい全体データ テーブルを作成する場所ありがとう、ジャルモ。 あなたのコードは主に効率の向上ですか、それとも真の機能の向上ですか?
私にとっては完全には機能しませんが、これらすべてが別の for ループ (または 2 つ) にあると言わざるを得ません。
For( i = 1, i <= N Items( IDs ), i++,
ID = IDs[i];
date_array = Associative Array( {"date1", "date2", "date"}, {{}, {}, {}} );
For( date = date_array << First, !Is Empty( date ), date = date_array << Next( date ), //looping through date_array's keys is clunky but done this way in JMP
dt << Select Where(:Timepoint == date);
dt_ld4 << Subset(Columns({"Timepoint", "Target Channel"}), Selected Rows, Output table name("Subset"));
//...
););コンピューターは実行時にかなり考えているようですが、画面には何も表示されません。 このコードはすべて匿名化されているため、スペルミスや転記ミスの可能性があり、書かれたものの以前のバージョンと混同される可能性があることに注意する必要があります. おおよその類似点を作ることができると仮定するのは安全だと思います...
これらの 2 つの行がループの内側にあるべきか、いずれかのループの外側にあるべきか、または現時点で両方のループが必要かどうかはわかりません。 もう一度スクリプトを詳しく調べる必要があります。
また、このコードに関するいくつかの個別のトピックについて、別の投稿で説明しています。 それが許容できるエチケットなのか、それともコード チャンクを優先して 1 つの投稿にまとめ、個別のトピックについて 1 つの投稿で議論するのが望ましいのか、またはどちらの方法でも問題ないのか、上級者から教えてもらえますか?
ムチョス・グラシアス
マイケル
Re: Select Columns Where を使用して for ループでテーブルにデータ値を追加する方法 ターゲット データの新しい全体データ テーブルを作成する場所私はあなたがここで何をしたいのか 100% 確信が持てないので、少し推測しています
これらの 2 つの行には、いくつかの問題があるようです。
dt << Select Columns( :Timepoint, :Target Channel, :Run date ), Where(:Timepoint == date);
dt << Subset( ( Selected Rows ), Output Table Name( "Subset" )););
サブセット コマンド内で必要な列を組み合わせることができ、行の選択は << Select Where で行うことができます (Select が欠落しているようです)。
dt << Select Where(:Timepoint == date);
dt << Subset(Columns({"Timepoint", "TargetChannel"}), Selected Rows, Output table name("Subset"));また、サブセット化する列を最初に選択する場合は、選択した列をサブセット コマンド内に追加する必要があります。
dt << Subset(Output table name("Subset"), Selected Rows, Selected Columns);Re: Select Columns Where を使用して for ループでテーブルにデータ値を追加する方法 ターゲット データの新しい全体データ テーブルを作成する場所を見てみましょう
dt << add rows(n);
必要に応じて新しい行を追加する