如何使用 Select Columns 在 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) 指定的數據,並在循環完成時將其組合到最後的組合數據表中,並顯示結果。
到目前為止,它還沒有在任何地方添加任何東西;我最終根本沒有新的數據表。
我也將所有這些內容都放在另一個 for 循環中,基於示例 ID,但我認為在這裡添加這些內容目前只會使事情變得過於復雜。
我在 JMP 社區論壇中找到的所有其他示例都非常複雜,或者看起來如此,構建數據數組並將它們傳輸到數據表或類似的東西。 我希望這裡的解決方案盡可能簡單。 當然,我會在收到回復後為對話做出貢獻,但到目前為止我完全陷入困境。
感謝您的幫助,
麥克風
高級統計建模內容組織實驗設計大規模定制分享和交流結果A回复:如何使用 Select Columns 在 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 項(dt << 獲取選定行));它應該告訴您是否已選擇任何行。 另外,如果您有類似命名的列,我也不會覺得使用 ID 作為變量名很舒服(它可能有效,不確定,但為了確定起見,我確實避免使用此類名稱)。 我會將其替換為 currentID 或其他內容。
我認為,在這一點上,如果我們有一個主題可以嘗試幫助您部分解決這個問題,可能會更容易。對我們有很大幫助的一件事就是擁有一個示例數據集。 數據集不必很大,可以是匿名的或完全偽造的數據,但它仍然應該是現實的(列數據類型相同,可以測試不同的情況)。
回复:如何使用 Select Columns 在 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"));
//...
););計算機在執行時似乎思考了很多,但屏幕上沒有顯示任何內容。 我必須注意,所有這些代碼都是匿名的,因此可能會出現拼寫錯誤和轉錄錯誤,以及可能與所編寫內容的早期版本混淆。 我想可以安全地假設可以做出近似相似之處......
我不知道這兩行應該位於循環內部還是其中一個循環外部,或者此時我是否需要兩個循環。 我需要再仔細看一遍劇本。
我還在不同的帖子中討論了有關這段代碼的幾個單獨的主題。 有人可以告訴我這是否是可以接受的禮儀,或者是否最好將代碼塊優先放到一篇文章中並在一篇文章中討論單獨的主題,或者這兩種方式都可以嗎?
穆科斯·格拉西亞斯,
邁克爾
回复:如何使用 Select Columns 在 for 循環中將數據值添加到表中 在哪裡創建目標數據的新總體數據表我不是 100% 確定你想在這裡做什麼,所以我猜測一下
這兩行似乎可能存在一些問題:
dt << Select Columns( :Timepoint, :Target Channel, :Run date ), Where(:Timepoint == date);
dt << Subset( ( Selected Rows ), Output Table Name( "Subset" )););
您可以在子集命令中組合所需的列,並且可以使用 << SelectWhere 來選擇行(似乎您缺少 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);回复:如何使用 Select Columns 在 for 循環中將數據值添加到表中 在哪裡創建目標數據的新總體數據表看一眼
dt << add rows(n);
根據需要添加新行