cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Instantly extract effect sizes, F-ratios, and FDR-adjusted p-values from your models with the Calculate Effects Sizes extension, available now in the JMP Marketplace!
  • New to JMP? Join us Sept. 23-24 for the Early User Edition of Discovery Summit, tailor-made for new users. Register now for free!
  • Your voice matters! Tell us how you prefer to receive JMP updates, so we can tailor our communication to your needs. Take short survey.

Discussions

Solve problems, and share tips and tricks with other JMP users.
Choose Language Hide Translation Bar
RayE
Level III

Generate Delta table to calculate deltas between two temp measurments

I have a data table that combines 2 datasets for 2 temperature for multiple units. Each unit is subjected to 20+ tests at 2 temps.

I need to generate a delta table for each unit, that calculate the delta between temp2 - temp1 as shown in table "Data_Table".

I keep getting the same error after an incomplete delta table is generated shown next

RayE_3-1769461059715.png

 

the error I get 

RayE_2-1769461006624.png

 

My data table 

RayE_4-1769461096642.png

here is my code, if any can help I would really appreciate it

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

 

11 REPLIES 11
jthi
Super User

Re: Generate Delta table to calculate deltas between two temp measurments

You can script it. Where are your limits coming from?

-Jarmo
RayE
Level III

Re: Generate Delta table to calculate deltas between two temp measurments

Thanks for the reply, I was able to resolve it. btw my limits are normally imported for each column

 

Recommended Articles