逐步建構行「列表」:取得所有行,然後取得滿足 X 條件的行,最後取得滿足 Y 條件(且 X 也滿足 Y 條件)的行我正在嘗試理解如何處理包含行的物件。即使這樣的描述也可能不準確。
在此上下文中,「FilteredRows」指的是什麼?
dt = Current Data Table();
FilteredRows = dt << get rows where( :Date == 12May2025 );
Show( N Rows( FilteredRows ) );
稍微回顧一下,是否有 JSL 命令可以將物件設定為資料表中的所有行?或者說,這樣做根本沒必要?
我能找到的最接近且避免使用“選擇所有行”的方法是:
AllRows = dt << 取得第 1 行;
感覺像作弊一樣。
更重要的是,我希望能夠對部分行應用額外的篩選條件。
這樣做行不通,但表達了意圖:
XFilteredRows = dt << 取得 X 值為 42 的行
XYFilteredRows = XFilteredRows << 取得 Y 值為 1.21 的行;
是的,我可以在一行中完成這兩件事。
XYFiteredRows = dt << 取得 X==42 且 Y==1.21 的行;
不過我打算在「每行循環」中使用它,其中 X 會移除 99% 的行,之後我還需要獨立地篩選更多參數,例如滿足 XY 的行、滿足 XZ 的行、滿足 X 但不符合 Y 的行等等…
我認為對於大型表格,保留 X 個篩選後的行會更快。
另外,我正在嘗試獲得的結果與「分組依據」的結果非常相似,但使用的是自訂公式。
列公式的 JSL:
列平均值( :參數, :X )
「分組依據」對於使用內建函數建立的列公式非常方便,但是當我想進行更複雜的數學運算時,我不知道如何實現相同的分組效果。
自動化和腳本編寫回覆:逐步建置行「列表」:取得所有行,然後取得滿足 X 的行,然後取得滿足 Y(和 X)的行「容器」是一個(一維)「矩陣」。
您也可以手動建立矩陣:
myRows = Matrix({1,2,3})
myRows = 1::3
myRows = [1, 2, 3]
求交集(以及其他集合運算,如並集、差集)有兩種方法。
a) 使用關聯數組
aa1 = associative array (myRows1);
aa2 = associative array (myRows2);
aa1 << intersect(aa2);<BR />// aa1 << remove(aa2);
list of rows = aa1 << get keys;
rows= matrix(list of rows);

b) [JMP19 新增]:使用列表
list1 = as list (myRows1);
list2 = as list (myRows2);
<STRIKE>
list of rows = set intersect(list1, list2);
</STRIKE>
list of rows = set intersection(list1, list2);
//list of rows = set difference(list1, list2);
rows= matrix(list of rows);

矩陣的交集?我猜:沒有。
回覆:逐步建置行「列表」:取得所有行,然後取得滿足 X 的行,然後取得滿足 Y(和 X)的行hogi,
你又一次救了我。謝謝!
需要澄清一點,我使用了你的文法。
list of rows = set intersect(list1, list2);
一開始它變成了藍色,所以我以為沒問題,但奇怪的是它沒有自動大寫。後來我查了腳本指南,才發現是「設定交點」。現在一切正常了。謝謝!