Subscribe Bookmark RSS Feed

Deleting rows using JSL scripts

asvp

Community Trekker

Joined:

Jun 23, 2011

How can we delete rows from a data table (using JMP script) when some columns in this data table satisfy a particular criteria?

Using Delete Rows is not working for me in my script.

Thanks
2 ACCEPTED SOLUTIONS

Accepted Solutions
ms

Super User

Joined:

Jun 23, 2011

Solution

Here is one way to do it.

dt = Current Data Table();
For Each Row( Row State() = Selected State( criteriacolumn[] == criteria ) );
dt << delete rows();
pmroz

Super User

Joined:

Jun 23, 2011

Solution

Here's another way. I don't know if it's any faster.

dt << select where(:N < min_case_value);
dt << delete rows;
5 REPLIES
ms

Super User

Joined:

Jun 23, 2011

Solution

Here is one way to do it.

dt = Current Data Table();
For Each Row( Row State() = Selected State( criteriacolumn[] == criteria ) );
dt << delete rows();
asvp

Community Trekker

Joined:

Jun 23, 2011

Thanks MS, it works.
pmroz

Super User

Joined:

Jun 23, 2011

Solution

Here's another way. I don't know if it's any faster.

dt << select where(:N < min_case_value);
dt << delete rows;
mpb

Super User

Joined:

Jun 23, 2011

> Here's another way. I don't know if it's any
> faster.

Well I made a table with 6 columns and 100,000 rows and the For solution took about 1 second and the direct select took "0" seconds.

When I increased the number of rows to 1,000,000 then the For solution took 11 or 12 seconds and the direct select took 3 seconds.

So on my pc running winXP using this particular table the direct select is about 4 times faster but you would need a really large table to notice the difference.

Michael
ms

Super User

Joined:

Jun 23, 2011

Thanks!

Fast is good. The direct method has also the advantage that easier to read (and remember).

The loop method still is useful when you need to set other or combined row states.