cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • JMP Security Notice: CVE-2026-109618 and CVE-2026-109619

    JMP promptly initiated a review of its products, services, and relevant infrastructure for exposure to CVE-2026-109618 and CVE-2026-109619.

    Our assessment of JMP products has not identified exposure to these vulnerabilities. Where remediation was required within supporting environments, appropriate security updates and controls have been applied and validated.

    We have identified no evidence of successful exploitation or unauthorized access to JMP systems or customer information associated with these vulnerabilities.

    JMP continues to monitor the issue and relevant vendor guidance. No action is required by JMP customers at this time.

  • Don’t miss your chance to experience Discovery Summit Europe at our best available rate! Early bird registration through 31 Oct.
  • Graph Builder Toolbar streamlines interactive graphing. Creates shortcuts on Report and GraphBuilder Helpers toolbars. Download and install the extension.

Discussions

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

how to make a subset of a table and append data from loop

Hi,

 

I have a set of data, (see attached). i want to check every row on a column (against a certain criteria) and then isolate rows that do not meet that criteria and subset them into a new data table. i want to be able to repeat this for multiple columns (where each has its own criteria) and continue adding to this subset table that i originally created. i'm having some trouble with this and was hoping if someone could help.

 

here is what i was doing:

 

path = "xxxxxxx/";
data_table = Open( path || "Sample Data.jmp" );
Sub_Table = New Table( "Rejected Parts Table", invisible );
 
New_table = data_table;
For( k = 1, k < N Col( New_table ), k++,
	Print( k );
	New_table << select where( Column( 1 + k )[] >= 0.2 | Column( 1 + k )[] <= 0.02 );
	alp = New_table << Subset( Selected Rows, output table name( "subset" ) );
	alp << Concatenate( Sub_Table, output table name( "Rejected Parts Table" ) ) <<
	Save( path || "Rejected Parts.jmp" );
	Close( alp );
	New_table << delete rows();
);

 

2 REPLIES 2
pmroz
Super User

Re: how to make a subset of a table and append data from loop

This one was a bit tricky.  The main fix is to use AS COLUMN in your select statement.  I changed the logic to use get rows where and build up a list of rows to subset/delete.  The get_unique_values function is courtesy of this forum!

 

get_unique_values = Function( {in_list},
	{Default Local},
	tmp = [=> 0];
	Insert Into( tmp, in_list );
	tmp << get keys;
);
 
path = "c:\temp\";
New_table = Open( path || "Sample Data.jmp" );
 
all_selected_rows = [];
 
For( k = 1, k < N Col( New_table ), k++,
	Print( k );
 
   	selected_rows = new_table << get rows where( As Column( 1 + k ) >= .2 | As Column( 1 + k ) <= .02 );
 
// Append the rows we just found to the master list
   	If( N Rows( selected_rows ) > 0,
		all_selected_rows = all_selected_rows |/ selected_rows
	);
);
 
// Convert matrix to a list and get unique values
all_selected_list = get_unique_values( As List( all_selected_rows ) );
 
alp = New_table << Subset( rows( all_selected_list ), output table name( "Rejected Parts Table" ) );
 
alp << Save( path || "Rejected Parts.jmp" );
 
Close( alp );
 
New_table << delete rows( all_selected_list );

 

ms
Super User (Alumni) ms
Super User (Alumni)

Re: how to make a subset of a table and append data from loop

An alternative approach using the same criteria for all columns:

 

dt = Data Table( "Sample Data.jmp" );
r = Loc( V Sum( Transpose( !(0.02 < dt << get as matrix < 0.2) ) ) );
dt << Subset( rows( r ), output table name( "Rejected Parts Table" ) );
dt << delete rows( r );

Slightly more complicated when each column has its own criteria, for example:

dt = Data Table( "Sample Data.jmp" );
upper = [0.2 0.3 0.2 0.4 0.2];
lower = [0.02 0.03 0.02 0.04 0.02];
r = Loc( V Sum( Transpose( !(Repeat( lower, N Row( dt ) ) < dt << get as matrix < Repeat( upper, N Row( dt ) )) ) ) );
dt << Subset( rows( r ), output table name( "Rejected Parts Table" ) );
dt << delete rows( r );

 

Recommended Articles