如何在具有堆疊重複連續資料的資料表中建立帶有實驗編號的新欄位?你好,
我有一個重複連續實驗的數據表。因此數據已經堆疊。我有一列,其中每個新實驗都從 1 開始,然後是 2 等等,直到最後一次測量。我想建立一個帶有實驗編號的新列,因此每次另一列以 1 開頭時,這都是另一個實驗的開始。
我曾嘗試在人工智慧的幫助下編寫這個腳本,但沒有成功。希望有人能幫助我。
dt = 當前資料表();
// 用於識別新實驗的列
實驗標識符 = 列(dt,「列1」); // 它是 Column1,包含從 1 到 100 不斷重複的數字。
// 為樣本數字建立新列
dt << 新列(“SampleNumber”,數字);
// 初始化變數
當前實驗 = 實驗標識符[1];
樣本數 = 1;
// 使用顯式行索引迭代每一行
對於(i = 1,i <= N 行(dt),i++,
如果(experimentIdentifier[i] != currentExperiment,
// 新的實驗開始,重置樣本數
當前實驗 = 實驗標識符[i];
樣本數 = 1;
,
// 否則,增加樣本數
樣本數++;
(英文):
// 將樣本編號分配給新列
dt:樣本編號[i] = 樣本編號;
(英文):
自動化和腳本資料混合與清理回覆:如何在具有堆疊重複連續資料的資料表中建立帶有實驗編號的新欄位?建立一個新列並將其設定為公式:
Col Cumulative Sum( 1, :Column 1 )
第 1 列是包含測量數字的欄位。
腦子放屁。
回覆:如何在具有堆疊重複連續資料的資料表中建立帶有實驗編號的新欄位?Length( Loc( :Column 1[1 :: Row()], 1 ) )
這個公式有效。
回覆:如何在具有堆疊重複連續資料的資料表中建立帶有實驗編號的新欄位?您可以使用 Col Cumulative Sum(),但它不太漂亮。
Col Cumulative Sum( If( :Column 1 == 1, :Column 1, 0 ) )
回覆:如何在具有堆疊重複連續資料的資料表中建立帶有實驗編號的新欄位?我不明白如何在腳本中使用它。
我也嘗試過這個,但到目前為止,我的新列中的所有行的值都是 1。您能看出哪裡出了問題嗎?
dt = 目前資料表 () << 新列("實驗編號",
數字,
公式(
If( Row() == 1, 1, // 將第一行的實驗編號初始化為 1
If( :Point No. == 1 & Lag(:Point No.) != 1, Lag(:Experiment No) + 1, // 如果「Point No.」重設為 1,則增加實驗編號
Lag(:實驗編號, 1) // 否則,保持相同的實驗編號
)
)
)
(此處似有缺失,請提供更正的文字)。
回覆:如何在具有堆疊重複連續資料的資料表中建立帶有實驗編號的新欄位?你好@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>
回覆:如何在具有堆疊重複連續資料的資料表中建立帶有實驗編號的新欄位?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
)
)
)
);

回覆:如何在具有堆疊重複連續資料的資料表中建立帶有實驗編號的新欄位?非常感謝您的幫忙!現在它可以與 If 公式和 Length 公式一起使用!
回覆:如何在具有堆疊重複連續資料的資料表中建立帶有實驗編號的新欄位?幾週後回到這個帖子,分享一個類似問題的好解決方案,我認為使用更簡單的公式可能會更好:
已解決:如何取得新列來填入大型資料集中的多個循環或循環...... - JMP 使用者社群