cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Sign-in to the JMP Community will be unavailable intermittently Dec. 6-7 due to a system update. Thank you for your understanding!
  • We’re retiring the File Exchange at the end of this year. The JMP Marketplace is now your destination for add-ins and extensions.
  • JMP 19 is here! Learn more about the new features.

Discussions

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

Is there an alternative to iterating through rows using column formula?

I have a dataset which is a series of test runs, all collected in one table. The experiment is 6 sweeps from high to low speed for each sample, and what I need to do is assign the correct sweep number to each one (i.e. from 1 to 6) and then restart the sequence for the next sample. I could easily do this with the sequence or count function, however the number of points in each sweep is not always the same, it varies around 24-26. See image below for an example of one "sweep" from high to low speed before starting the next one.

 

I'm sure this could be done with a script, however my experience in that area is minimal. Is there a quick and dirty way of doing it using column formulas?

 

david_gillespie_0-1633009799849.png

 

1 ACCEPTED SOLUTION

Accepted Solutions
jthi
Super User

Re: Is there an alternative to iterating through rows using column formula?

Lag() could be helpful here.

 

Replace :Column 1 with your speed column:

If(Row() == 1, curVal = 1);
If(:Column 1 > Lag(:Column 1),
	curVal += 1
);
curVal;

jthi_0-1633010918251.png

 

-Jarmo

View solution in original post

2 REPLIES 2
jthi
Super User

Re: Is there an alternative to iterating through rows using column formula?

Lag() could be helpful here.

 

Replace :Column 1 with your speed column:

If(Row() == 1, curVal = 1);
If(:Column 1 > Lag(:Column 1),
	curVal += 1
);
curVal;

jthi_0-1633010918251.png

 

-Jarmo

Re: Is there an alternative to iterating through rows using column formula?

Thanks for the help, that worked for each set of 6 runs of each sample. I added an extra line in to bring the counter back to 1 after each 6 sweeps so the below formula and code assigns the right sweep number with all the data stacked in one table!

 

If( Row() == 1, curVal = 1 );
If( :speed > Lag( :speed ),
	curVal += 1
);
If( curVal > 6, CurVal = 1 );
curVal;

 

david_gillespie_0-1633421007508.png

 

 

Recommended Articles