我有一个数据表,它合并了多个单元在两种温度下的两个数据集。每个单元在两种温度下都要进行 20 多次测试。
我需要为每个单元生成一个增量表,计算 temp2 - temp1 之间的增量,如表“Data_Table”所示。
在生成不完整的增量表后,我一直遇到同样的错误,如下所示。

我收到的错误信息

我的数据表

这是我的代码,如果有人能帮忙,我将不胜感激。
Names Default To Here(1);
dt = Current Data Table();
allCols = dt << Get Column Names(string);
tpColName = allCols[1]; // Always Column 1
dutColName = allCols[2]; // Always Column 2
testCols = {};
For(i = 3, i <= N Items(allCols), i++,
Insert Into(testCols, allCols[i])
);
// 2. Extract Unique Values
Summarize(dt, dutList = By(Column(dt, 2)));
Summarize(dt, tpList = By(Column(dt, 1)));
// 3. Setup Results Table
dt_delta = New Table("DUT Delta Results");
dt_delta << New Column("DUT", Character, Nominal);
dt_delta << New Column("Shift", Character, Nominal);
For(i = 1, i <= N Items(testCols), i++,
dt_delta << New Column(testCols[i] || " Δ", Numeric, Continuous)
);
// 4. Robust Calculation Loop
For(d = 1, d <= N Items(dutList), d++,
currDUT = dutList[d];
For(t = 2, t <= N Items(tpList), t++,
p1 = tpList[t - 1];
p2 = tpList[t];
// This forces a match even if your DUT/TestPoints are numbers
r1Mat = dt << Get Rows Where(
Char(Column(dt, 2)[]) == Char(currDUT) & Char(Column(dt, 1)[]) == Char(p1)
);
r2Mat = dt << Get Rows Where(
Char(Column(dt, 2)[]) == Char(currDUT) & Char(Column(dt, 1)[]) == Char(p2)
);
// Ensure exactly one row found for each point to prevent subscript errors
If(N Rows(r1Mat) > 0 & N Rows(r2Mat) > 0,
row1 = r1Mat[1]; // Explicitly take first found row as integer
row2 = r2Mat[1];
newRow = dt_delta << Add Rows(1);
dt_delta:DUT[newRow] = currDUT;
dt_delta:Shift[newRow] = p2 || " - " || p1;
For(c = 1, c <= N Items(testCols), c++,
colN = testCols[c];
v1 = Column(dt, colN)[row1];
v2 = Column(dt, colN)[row2];
If(!Is Missing(v1) & !Is Missing(v2),
Column(dt_delta, colN || " Δ")[newRow] = v2 - v1
);
);
);
);
);
dt_delta << Bring Window To Front;
Edit (jthi): added JSL formatting
newRow = dt_delta << Add Rows(1);
不返回行号。如果将其更改为:
dt_delta << Add Rows(1);
newRow = nrows(dt_delta);
它会奏效的
效果简直太棒了!我会用更大的数据集试试。谢谢你,吉姆。

嗨,Jim,JMP里有没有什么脚本或功能可以让我把所有数值列都缩放到包含限值的位置?这样我在运行变异性图表的时候,限值也会被包含在内。现在,所有图表都是只根据数据自动缩放的。谢谢。
JMP 数据表中的每一列都可以设置列属性。右键单击列标题,然后选择“列属性”,即可显示所有可设置的列属性。您似乎需要设置“规格限制”和“坐标轴”这两项。设置完成后,它们将应用于/显示在所有后续的相关图表中。
嗨,Jim,这个方法或许对少数测试有效,但我有大约 2000 个测试,一个一个地处理太麻烦了。有没有办法编写脚本一次性应用到所有测试中?谢谢。
谢谢回复,我已经解决了。顺便说一下,我的限制通常是针对每一列导入的。