여러 장치에 대해 두 가지 온도 값을 갖는 두 개의 데이터 세트를 결합한 데이터 테이블이 있습니다. 각 장치는 두 가지 온도에서 20회 이상의 테스트를 거칩니다.
각 장치별로 온도2와 온도1의 차이를 계산하는 델타 테이블을 생성해야 합니다. 이 델타 테이블은 "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);
효과가 있을 겁니다
Jarmo님, 감사합니다. 첨부된 표를 참조하세요.
짐, 고마워요. 새 코드를 사용해 볼게요. 전에는 빈 테이블이 나왔어요.
정말 효과가 좋았어요! 더 큰 데이터셋으로 시도해 보겠습니다. 감사합니다, 짐!

엑셀에서도 계산 결과가 일치함을 확인했습니다.

안녕하세요 짐, JMP에 모든 숫자 열의 범위를 제한값까지 포함하여 스케일링할 수 있는 스크립트나 기능이 있나요? 변동성 차트를 실행할 때 제한값이 포함되도록 하고 싶습니다. 지금은 모든 그래프가 데이터에 따라서만 자동으로 스케일링됩니다. 감사합니다.
JMP 데이터 테이블의 모든 열에는 열 속성을 설정할 수 있습니다. 열 머리글을 마우스 오른쪽 버튼으로 클릭한 다음 '열 속성'을 선택하면 설정 가능한 모든 열 속성이 표시됩니다. 필요한 속성은 '사양 한계'와 '축' 두 가지입니다. 이 속성들을 설정하면 이후 생성되는 모든 관련 그래프에 적용/표시됩니다.
안녕하세요 짐, 이 방법은 몇몇 테스트에는 효과가 있을 수 있지만, 테스트가 약 2천 개나 되어서 하나씩 처리하기는 어렵습니다. 모든 테스트에 적용할 수 있는 스크립트를 만들 수 있는 방법이 있을까요? 감사합니다.
스크립트로 작성할 수 있습니다. 당신의 한계는 어디에서 오는 건가요?
답변 감사합니다. 문제를 해결할 수 있었습니다. 참고로, 제 경우에는 각 열에 대해 제한값이 정상적으로 가져와집니다.