積み重ねられた繰り返し連続データを含むデータ テーブルに実験番号を含む新しい列を作成するにはどうすればよいですか?こんにちは、
繰り返しの連続実験を含むデータ テーブルがあります。そのため、データはすでに積み重ねられています。各新しい実験が 1 から始まり、次に 2 と最後の測定まで続く列があります。実験番号を含む新しい列を作成し、他の列が 1 から始まるたびに、別の実験が開始されるようにします。
AI の助けを借りてこのスクリプトを書こうとしましたが、うまくいきません。誰かが助けてくれることを願っています。
dt = 現在のデータテーブル();
// 新しい実験を識別するために使用する列
experimentIdentifier = Column(dt, "Column1"); // 1 から 100 までの数字が繰り返して含まれる Column1 です。
// サンプル番号用の新しい列を作成する
dt << 新しい列("SampleNumber", 数値);
// 変数を初期化する
現在の実験 = 実験識別子[1];
サンプル番号 = 1;
// 明示的な行インデックスを使用して各行を反復処理します
i = 1, i <= N 行目(dt), i++,
if(experimentIdentifier[i] != currentExperiment,
// 新しい実験が始まり、サンプル番号がリセットされます
現在の実験 = 実験識別子[i];
サンプル番号 = 1;
、
// それ以外の場合はサンプル番号を増分する
サンプル番号++;
);
// 新しい列にサンプル番号を割り当てる
dt:サンプル番号[i] = サンプル番号;
);
自動化とスクリプトデータのブレンドとクリーンアップRe: 積み重ねられた繰り返し連続データを含むデータ テーブルに実験番号を含む新しい列を作成するにはどうすればよいですか?新しい列を作成し、次の数式を設定します。
Col Cumulative Sum( 1, :Column 1 )
列 1 は測定番号が含まれる列です。
頭が真っ白になった。
Re: 積み重ねられた繰り返し連続データを含むデータ テーブルに実験番号を含む新しい列を作成するにはどうすればよいですか?Length( Loc( :Column 1[1 :: Row()], 1 ) )
その式は機能します。
Re: 積み重ねられた繰り返し連続データを含むデータ テーブルに実験番号を含む新しい列を作成するにはどうすればよいですか?Col Cumulative Sum() を使用することもできますが、それほど見栄えがよくありません。
Col Cumulative Sum( If( :Column 1 == 1, :Column 1, 0 ) )
Re: 積み重ねられた繰り返し連続データを含むデータ テーブルに実験番号を含む新しい列を作成するにはどうすればよいですか?これをスクリプトでどのように使用すればいいのか分かりません。
私もこれを試してみましたが、今のところ新しい列のすべての行の値は 1 になっています。何が機能していないのかわかりますか?
dt = 現在のデータ テーブル () << 新しい列 ("実験番号",
数値、
式(
If( Row() == 1, 1, // 最初の行の実験番号を1に初期化する
If( :ポイント番号 == 1 & Lag(:ポイント番号) != 1, Lag(:実験番号) + 1, // 「ポイント番号」が1にリセットされた場合、実験番号を1つ増やす
Lag(:実験番号, 1) // それ以外の場合は同じ実験番号を維持します
)
)
)
);
Re: 積み重ねられた繰り返し連続データを含むデータ テーブルに実験番号を含む新しい列を作成するにはどうすればよいですか?こんにちは@WhiteCow2000さん、
私はこれに挑戦してみました。まず、「1」が表示されている位置を取得し、それぞれに増加する番号を付け、JMPで手動で実行できる「補完」>「欠損値を前の値で置換」オプションをコピーしました。より柔軟に操作できるよう、測定する列を選択できるウィンドウを追加しました。
Names Default To Here( 1 );
dt = current data Table ();
dt << Clear Column Selection();
//This will work to find the instance where the lowest number (1 in this case) appears in the row order, if the rows are sorted in any way then it will adapt to that so be careful.
//Window to select the column with repeats
nw = New Window( "Launch Dialog",
<<MODAL></MODAL>
<P>JSL で正確な列名を入力するスクリプトの簡単なバージョンは次のとおりです。<BR /><BR /></P>
<CODE class=" language-jsl">Names Default To Here( 1 );
dt = current data Table ();
//This will work to find the instance where the lowest number (1 in this case) appears in the row order, if the rows are sorted in any way
//Window to select the column with repeats
//Add a column to track experiment number
dt<<NEW column=""></NEW>
Re: 積み重ねられた繰り返し連続データを含むデータ テーブルに実験番号を含む新しい列を作成するにはどうすればよいですか?AIはJSLがかなり苦手です。私の解決策を適用するのは簡単です。また、最後の式を試してみましたが、うまくいきました。
dt = New Table( New Column( "Point No.", Set Values( Repeat( 1 :: 100, 4 ) ) ) );
dt << New Column( "Experiment No", Numeric, Formula( Length( Loc( :Point No.[1 :: Row()], 1 ) ) ) );
dt << New Column( "Experiment No", Numeric, Formula( Col Cumulative Sum( If( :Point No. == 1, :Point No., 1, 0 ) ) ) );
dt << New Column( "Experiment No",
Numeric,
Formula(
If( Row() == 1,
1, // Initialize experiment number as 1 for the first row
If( :Point No. == 1<SPAN> & Lag(:Point No.) != 1</SPAN>,
Lag( :Experiment No ) + 1, // Increment experiment number if "Point No." resets to 1
Lag( :Experiment No, 1 ) // Otherwise, keep the same experiment number
)
)
)
);

Re: 積み重ねられた繰り返し連続データを含むデータ テーブルに実験番号を含む新しい列を作成するにはどうすればよいですか?ご協力ありがとうございました!If式とLength式の両方で動作するようになりました!
Re: 積み重ねられた繰り返し連続データを含むデータ テーブルに実験番号を含む新しい列を作成するにはどうすればよいですか?数週間後にこのスレッドに戻り、同様の問題に対する優れた解決策を共有します。より単純な式を使用すると、よりうまく機能すると思います。
解決済み: 複数のサイクルの大規模データセットでサイクルを入力するための新しい列を取得する方法 - JMP ユーザーコミュニティ