我有一個數據表,它合併了多個單元在兩種溫度下的兩個數據集。每個單元在兩種溫度下都要進行 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 個測試,一個一個地處理太麻煩了。有沒有辦法編寫腳本一次應用到所有測試中?謝謝。
謝謝回复,我已經解決了。順便說一下,我的限制通常是針對每一列導入的。