各位专家大家好,
如何使用 JSL 从多列中选择并着色值最高的前 5 个单元格?
例子:
从 Type_A 列到 Type_D 列的所有单元格(这些列名的相似之处在于都包含“_”)
我想要选择并将值最高的前 5 个单元格涂成黄色。
看来“选择位置”功能仅适用于比较两列。
预期结果应该是这样的;
0.14、0.12、0.11、0.1、0.9 是值最高的前 5 个单元格。

谢谢。
我正在使用 JMP 17.2
获取您要搜索的所有列的列名。
添加包含行号的新列
堆叠所有要搜索的列。确保保留行列
按数据列的降序对堆叠数据表进行排序
循环遍历排序后的表格的前 5 行,并根据标签列(原始表格中的列名)和行列设置原始表格中的单元格颜色。
删除堆叠和排序的数据表
从原始数据表中删除行列
嗨@jthi ,
我以为我们有像 =Top(5, column("Type_A"):column("Type_D) << Color Cell (3); 这样的公式
其中 5 指的是从 A 类列到 D 类列的顶部值的数量。
我将尝试@txnelson解决方案。
谢谢 !
有一个使用矩阵的选项(Jim 建议的交互式解决方案更容易理解,也是我想到的第一个想法)
Names Default To Here(1);
// This table shows how this will behave with ties
// dt = Open("$SAMPLE_DATA/2D Gaussian Process Example.jmp");
// cols_of_interest = {"X1", "X2"};
dt = Open("$SAMPLE_DATA/Pogo Jumps.jmp");
cols_of_interest = {"Yat", "Yee", "Sam"};
m = dt[0, cols_of_interest];
v = Shape(m, N Items(m));
r = Ranking(v); // let Ranking decide our top5
idx = Loc(r > N Items(m) - 5);
vals = J(1, N Items(m), .);
vals[idx] = 1;
vals = Shape(vals, N Items(m) / N Items(cols_of_interest));
For(i = 1, i <= N Cols(vals), i++,
rows_to_color = Loc(vals[0, i]);
Column(dt, cols_of_interest[i]) << Color Cells("Yellow", rows_to_color)
);
Write();
Pogo Jumps.jmp - Yat、Yee、Sam

2D 高斯过程示例.jmp - X1、X2(注意连接的行为)
