逐步构建行“列表”:获取所有行,然后获取满足 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);
一开始它变成了蓝色,所以我以为没问题,但奇怪的是它没有自动大写。后来我查了脚本指南,才发现是“设置交点”。现在一切正常了。谢谢!