如何在 for 循環中使用 Select Columns 將數據值添加到表中,在哪裡製作目標數據的新整體數據表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)指定的數據,並在循環完成後將其組合到最後的組合數據表中,並顯示結果.
到目前為止,它沒有在任何地方添加任何東西。我最終根本沒有新的數據表。
我也將所有這些都放在另一個 for 循環中,基於示例 ID,但我認為在這裡添加現在只會使事情過於復雜。
我在 JMP 社區論壇中找到的所有其他示例都非常複雜,或者看起來如此,構建數據數組並將它們傳輸到數據表或類似的東西。 我希望這裡的解決方案盡可能簡單。 當然,當回復進來時,我會為對話做出貢獻,但到目前為止,我完全被卡住了。
謝謝您的幫助,
麥克風
分析數據表其他腳本一個回复:如何在 for 循環中使用 Select Columns 將數據值添加到表中,在哪裡製作目標數據的新整體數據表選擇 Columns 部分可能是一個非常小的效率提升,但大多數情況下它只是使代碼更易於閱讀(在我看來)。
您是否嘗試過在循環中添加調試打印以查看是否有任何子集:
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 或其他東西替換它。
我認為在這一點上,如果我們有一個主題可以嘗試幫助您逐步解決此問題,可能會更容易。對我們有很大幫助的一件事是擁有一個示例數據集。 數據集不必很大,可以是匿名的或完全偽造的數據,但它仍然應該是真實的(列數據類型相同,可以測試不同的案例)。
回复:如何在 for 循環中使用 Select Columns 將數據值添加到表中,在哪裡製作目標數據的新整體數據表謝謝你,Jarmo。 那麼您的代碼主要是效率提升還是真正的功能提升?
它對我來說並不完全有效,但我不得不說我將所有這些都放在另一個 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 ), //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"));
//...
););計算機似乎在執行時思考了很多,但屏幕上沒有顯示任何內容。 我必須注意,所有這些代碼都是匿名的,因此可能會出現拼寫錯誤和轉錄錯誤,也可能會與早期版本的編寫內容混淆。 我想可以肯定地假設可以做出近似的相似性......
我不知道這兩行應該在循環內部還是其中之一之外,或者此時我是否需要兩個循環。 我需要再仔細看看這個腳本。
我還在單獨的帖子中討論了關於這段代碼的幾個單獨的主題。 資深人士能否告訴我這是否可以接受,或者是否最好將代碼塊優先放在一篇文章中並在一篇文章中討論單獨的主題,或者任何一種方式都可以嗎?
穆喬斯·格拉西亞斯,
邁克爾
回复:如何在 for 循環中使用 Select Columns 將數據值添加到表中,在哪裡製作目標數據的新整體數據表我不是 100% 確定你想在這裡做什麼,所以我猜一點
這兩行似乎可能存在一些問題:
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"));此外,如果您希望先選擇要子集化的列,則必須在 Subset 命令中添加 Selected Columns
dt << Subset(Output table name("Subset"), Selected Rows, Selected Columns);回复:如何在 for 循環中使用 Select Columns 將數據值添加到表中,在哪裡製作目標數據的新整體數據表看一眼
dt << add rows(n);
根據需要添加新行