cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Image to Table JMP extension imports single or batch images as data tables. Useful to extract curves from pictures or convert image data to curve data to use in analyses like Functional Data Explorer. Download and install the extension.

Discussions

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

Help needed

Hi all,
I am writing a script where I select a subset from a data table based on some criteria:
Example dt is my data table with column :Error_ID
I input: "dt_subset=dt<<select where (:Error_ID==0)<<subset(selected rows(1));" and I expect the dt_subset table to be filled by all the entries in the dt table where the column :Error_ID is 0.
Now let us say the dt data table has no Error_ID==0 rows, the dt_subset is empty.
I would have expected an dt_subset to be a new data table with the same columns as table dt but 0 rows, so that if I then check whether "If( !Empty(dt_subset)...)" I get a false and I do not continue doing work on the empty dt_subset table.
Instead I get an error if I try to check the if dt_subset is empty.
Basically what I want to do is be able to check if the selection is empty. Do you have a solution?
Thank you for your help!

....
1 REPLY 1
jthi
Super User

Re: Help needed

If you just wish to check if any rows are selected, you can use << Get Selected Rows

Names Default To Here(1); 

dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << Select Where(:age >= 20);
selrows = dt << Get Selected Rows;

If(N Items(selrows) == 0,
	Throw("No rows selected");
);

When I still need empty table after such a filter, I generally do something like this

Names Default To Here(1); 

dt = open("$SAMPLE_DATA/Big Class.jmp");
rows_of_interest = dt << Get Rows Where(:age >= 20);

If(N Items(rows_of_interest) > 0,
	dt_subset = dt << Subset(Rows(rows_of_interest), Selected Columns(0), Output table("SUBSET"));
,
	dt_subset = dt << Subset(Rows(1), Selected Columns(0), Output table("SUBSET"));
	dt_subset << Delete Rows(1);
);

Show(N Rows(dt_subset)); // demo purposes

If you wish to check from the table which was not created

Names Default To Here(1); 

dt = open("$SAMPLE_DATA/Big Class.jmp");
dt_subset = dt << Select Where(:age >= 20) << Subset(Selected Rows(1), Selected Columns(0), Output table("SUBSET"));

If(Is Empty(dt_subset),
	Throw("No rows selected");
);

Write();
-Jarmo

Recommended Articles