<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Selecting cells with empty data in Discussions</title>
    <link>https://community.jmp.com/t5/Discussions/Selecting-cells-with-empty-data/m-p/12987#M12285</link>
    <description>&lt;P&gt;If I'm reading your message correctly, I think you've actually got two questions.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;How to find the rows that are all missing for a given set of columns.&lt;/LI&gt;
&lt;LI&gt;How to make your code not dependent on the names of those columns and how many there are.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Not surprisingly there are lots of different ways to do 1. &lt;A href="https://community.jmp.com/people/PMroz" target="_blank"&gt;PMroz&lt;/A&gt; , &lt;A href="https://community.jmp.com/people/MS" target="_blank"&gt;MS&lt;/A&gt; and &lt;A href="https://community.jmp.com/people/Craige@JMP" target="_blank"&gt;Craige@JMP&lt;/A&gt; have given you some options there.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'll throw in one more. You could use the &lt;A href="http://www.jmp.com/support/help/Edit_Data.shtml" target="_blank"&gt;Missing Data Pattern&lt;/A&gt; utility to find them.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt = Open( "$SAMPLE_DATA\Cities.jmp" );

//delete some columns from this table to make it fit your example

dt &amp;lt;&amp;lt; delete columns( "PM10", "X", "Y" );

//change name of data table to ensure this modified version doesn't get saved 
//over the sample data

dt &amp;lt;&amp;lt; set name( "CitiesModified" );

//I want to use the columns starting at column 9, 
//so I build a list of references to them

mycols = {};

For( i = 9, i &amp;lt;= N Cols( dt ), i++,
	Insert Into( mycols, Column( dt, i ) )
);

mdp = Dt &amp;lt;&amp;lt; Missing Data Pattern( columns( Eval( mycols ) ), Output Table( "Missing Data Pattern" ) );

//The patterns columns shows the pattern of missing values
//the Missing Data Pattern data table is sorted, 
//so if there are rows with all missing data
//the last row of the Missing Data Pattern data table will be all 1s.
//The Repeat() function just builds a string of 1s for as many columns as I'm working with

If( Column( mdp, "Patterns" )[N Rows( mdp )] == Repeat( "1", N Items( mycols ) ), 

//The Missing Data Pattern data table is linked to the source table so selecting a row
	//in it, selects all the rows that it represents in the source table

	mdp &amp;lt;&amp;lt; Select Rows( N Rows( mdp ) );

//now I can delete the rows in the source table

	dt &amp;lt;&amp;lt; delete rows;
,
	Show( "No all missing rows" )
);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P style="font-size: 12px; font-family: Courier;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I've tried to show how to make this code work for any number of columns. In this case, because I needed a list of columns to pass to the Missing Data Pattern utility, I built a list based on the column numbers.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Even having written all of this and having shown how to use the Missing Data Pattern Utility, I think my favorite solution here would be &lt;A href="https://community.jmp.com/people/PMroz" target="_blank"&gt;PMroz&lt;/A&gt;'s to use &lt;A href="http://www.jmp.com/support/help/Stack_Columns.shtml" target="_blank"&gt;Stack Columns&lt;/A&gt;. You really want to end up with the data stacked anyway, so doing that first makes it easy to simply select the missing rows in the stacked column and delete them.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt = Open( "$SAMPLE_DATA\Cities.jmp" );

//delete some columns from this table to make it fit your example

dt &amp;lt;&amp;lt; delete columns( "PM10", "X", "Y" );

//change name of data table to ensure this modified version doesn't get saved 
//over the sample data

dt &amp;lt;&amp;lt; set name( "CitiesModified" );

//again I need a list of columns to use in the Stack()

mycols = {};

For( i = 9, i &amp;lt;= N Cols( dt ), i++,
	Insert Into( mycols, Column( dt, i ) )
);

//stack those columns creating a new data table

stacked_dt = dt &amp;lt;&amp;lt; Stack(
	columns( Eval( mycols ) ),
	Source Label Column( "Gas" ),
	Stacked Data Column( "PPM" )
);

missing_rows = stacked_dt &amp;lt;&amp;lt; get rows where( Is Missing( :PPM ) );

stacked_dt &amp;lt;&amp;lt; delete rows( missing_rows );
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 02 Jul 2021 21:01:08 GMT</pubDate>
    <dc:creator>Jeff_Perkinson</dc:creator>
    <dc:date>2021-07-02T21:01:08Z</dc:date>
    <item>
      <title>Selecting cells with empty data</title>
      <link>https://community.jmp.com/t5/Discussions/Selecting-cells-with-empty-data/m-p/12982#M12280</link>
      <description>&lt;P&gt;I have a table that looks like the table below:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;TABLE style="width: 679px;" border="0" cellspacing="0" cellpadding="0"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64" height="21" class="xl66"&gt;operator&lt;/TD&gt;
&lt;TD width="50" class="xl66" style="border-left: none;"&gt;M type&lt;/TD&gt;
&lt;TD width="84" class="xl66" style="border-left: none;"&gt;description&lt;/TD&gt;
&lt;TD width="97" class="xl66" style="border-left: none;"&gt;description 2&lt;/TD&gt;
&lt;TD width="64" class="xl66" style="border-left: none;"&gt;M1&lt;/TD&gt;
&lt;TD width="64" class="xl66" style="border-left: none;"&gt;M2&lt;/TD&gt;
&lt;TD width="64" class="xl66" style="border-left: none;"&gt;M3&lt;/TD&gt;
&lt;TD width="64" class="xl66" style="border-left: none;"&gt;M4&lt;/TD&gt;
&lt;TD width="64" class="xl66" style="border-left: none;"&gt;M5&lt;/TD&gt;
&lt;TD width="64" class="xl66" style="border-left: none;"&gt;M6&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD height="20" class="xl67" style="border-top: none;"&gt;415&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;Nxyz&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;A hot&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;Hot clean 1&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;415&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;415&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;415&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;415&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;415&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;415&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD height="20" class="xl67" style="border-top: none;"&gt;615&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;Nxyz&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;B cold&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;Cold clean 1&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;615&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;615&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;615&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;615&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;615&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD height="20" class="xl67" style="border-top: none;"&gt;815&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;Nxyz&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;A hot&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;Hot clean 2&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;815&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;815&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;815&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;815&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;815&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;815&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD height="20" class="xl67" style="border-top: none;"&gt;1015&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;Nxyz&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;B cold&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;Cold clean 2&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1015&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1015&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1015&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1015&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1015&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD height="20" class="xl67" style="border-top: none;"&gt;1215&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;Nxyz&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;A hot&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;Hot clean 1&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1215&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1215&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1215&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1215&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1215&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1215&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD height="20" class="xl67" style="border-top: none;"&gt;1415&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;Nxyz&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;B cold&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;Cold clean 1&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1415&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1415&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1415&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1415&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1415&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD height="20" class="xl67" style="border-top: none;"&gt;1615&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;Nxyz&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;A hot&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;Hot clean 2&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1615&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1615&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1615&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1615&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1615&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1615&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD height="20" class="xl67" style="border-top: none;"&gt;1815&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;Nxyz&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;B cold&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;Cold clean 2&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1815&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1815&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1815&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD class="xl67" style="border-top: none; border-left: none;"&gt;1815&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I want to select only the rows that is empty. Since the columns M1-M6 can vary each time I pull the data I can't use the column names in the JSL script. I'm trying to use a FOR loop below to select the rows of empty data, but this only selects the rows where the last cell is empty.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt = Current Data Table();
nc = dt &amp;lt;&amp;lt; get column names( Numeric );
For( i = 1, i &amp;lt;= N Items( nc ), i++,
dt &amp;lt;&amp;lt;select where( Is Missing( nc[] )));&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Eventually I want to get the output table to look like the following&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;&lt;/P&gt;
&lt;TABLE border="0" width="356" cellspacing="0" cellpadding="0"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64" height="20" class="xl66"&gt;operator&lt;/TD&gt;
&lt;TD width="64" class="xl66" style="border-left: none;"&gt;M type&lt;/TD&gt;
&lt;TD width="77" class="xl66" style="border-left: none;"&gt;description&lt;/TD&gt;
&lt;TD width="87" class="xl66" style="border-left: none;"&gt;description 2&lt;/TD&gt;
&lt;TD width="64" class="xl66" style="border-left: none;"&gt;Machine&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD height="20" class="xl66" style="border-top: none;"&gt;615&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;Nxyz&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;B cold&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;Cold clean 1&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;M4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD height="20" class="xl66" style="border-top: none;"&gt;1015&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;Nxyz&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;B cold&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;Cold clean 2&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;M2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD height="20" class="xl66" style="border-top: none;"&gt;1415&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;Nxyz&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;B cold&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;Cold clean 1&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;M6&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD height="20" class="xl66" style="border-top: none;"&gt;1815&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;Nxyz&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;B cold&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;Cold clean 2&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;M4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD height="20" class="xl66" style="border-top: none;"&gt;1815&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;Nxyz&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;B cold&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;Cold clean 2&lt;/TD&gt;
&lt;TD class="xl66" style="border-top: none; border-left: none;"&gt;M5&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The big trick to this is to do this without coding in the column names for (M1,M2 etc...) as they are going to change.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Any Ideas&lt;/P&gt;</description>
      <pubDate>Fri, 09 Jun 2023 23:23:24 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Selecting-cells-with-empty-data/m-p/12982#M12280</guid>
      <dc:creator>steven_w_daniel</dc:creator>
      <dc:date>2023-06-09T23:23:24Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting cells with empty data</title>
      <link>https://community.jmp.com/t5/Discussions/Selecting-cells-with-empty-data/m-p/12983#M12281</link>
      <description>&lt;P&gt;You can use the STACK command to stack your data, including the values of M1-Mn .&amp;nbsp; Then select rows that are empty and delete them.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Or try this code:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt = Current Data Table();
col_list = dt &amp;lt;&amp;lt; get column names( Numeric, string );
 
where_clause = "";
 
For( i = 1, i &amp;lt;= N Items( nc ), i++,
     one_col = col_list[i];
     if (i == 1,
     // then
           where_clause =evalinsert("\[dt &amp;lt;&amp;lt; select where(is missing(as column(dt, "^one_col^"))]\");
     // else
           ,
           where_clause = evalinsert("\[^where_clause^ | is missing(as column(dt, "^one_col^"))]\");
     );
);
 
where_clause = where_clause || ")";
eval(parse(where_clause));&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 13 Jun 2018 18:12:55 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Selecting-cells-with-empty-data/m-p/12983#M12281</guid>
      <dc:creator>pmroz</dc:creator>
      <dc:date>2018-06-13T18:12:55Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting cells with empty data</title>
      <link>https://community.jmp.com/t5/Discussions/Selecting-cells-with-empty-data/m-p/12984#M12282</link>
      <description>&lt;P&gt;Same answer as &lt;A href="https://kvoqx44227.lithium.com/people/PMroz" target="_blank" rel="nofollow noopener noreferrer noopener noreferrer"&gt;PMroz&lt;/A&gt; using expression manipulation:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt = Current Data Table();
e = Expr( Or() ); // the OR of the ismissing(columns) will be built here
nc = dt &amp;lt;&amp;lt; get column names( Numeric );
For( i = 1, i &amp;lt;= N Items( nc ), i++,
    Insert Into( e, Eval Expr( Is Missing( Expr( nc ) ) ) )
);
dt &amp;lt;&amp;lt; selectwhere( e );
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;the expression "e" looks like&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;nameexpr(e)
/*:
Is Missing( :m1 ) | Is Missing( :m2 ) | Is Missing( :m3 ) | Is Missing( :m4 ) | Is Missing( :m5 ) | Is Missing( :m6 )
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;LI-MESSAGE title="Head Arg Recurse Formula" uid="21141" url="https://community.jmp.com/t5/Uncharted/Head-Arg-Recurse-Formula/m-p/21141#U21141" discussion_style_icon_css="lia-mention-container-editor-message lia-img-icon-blog-thread lia-fa-icon lia-fa-blog lia-fa-thread lia-fa"&gt;&lt;/LI-MESSAGE&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;LI-MESSAGE title="Introspection" uid="28930" url="https://community.jmp.com/t5/Uncharted/Introspection/m-p/28930#U28930" discussion_style_icon_css="lia-mention-container-editor-message lia-img-icon-blog-thread lia-fa-icon lia-fa-blog lia-fa-thread lia-fa"&gt;&lt;/LI-MESSAGE&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" style="width: 680px;"&gt;&lt;SPAN class="lia-inline-image-display-wrapper"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="9093_selectRows.PNG" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/1733i2F7583640EA16B9D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="9093_selectRows.PNG" alt="9093_selectRows.PNG" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 02 Jul 2021 21:02:49 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Selecting-cells-with-empty-data/m-p/12984#M12282</guid>
      <dc:creator>Craige_Hales</dc:creator>
      <dc:date>2021-07-02T21:02:49Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting cells with empty data</title>
      <link>https://community.jmp.com/t5/Discussions/Selecting-cells-with-empty-data/m-p/12985#M12283</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Very slick.&amp;nbsp; Didn't know you could insert into an expression (e).&amp;nbsp; I thought &lt;STRONG&gt;insert into&lt;/STRONG&gt; needed a list.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Jun 2015 13:54:13 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Selecting-cells-with-empty-data/m-p/12985#M12283</guid>
      <dc:creator>pmroz</dc:creator>
      <dc:date>2015-06-25T13:54:13Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting cells with empty data</title>
      <link>https://community.jmp.com/t5/Discussions/Selecting-cells-with-empty-data/m-p/12986#M12284</link>
      <description>&lt;P&gt;Yet another way to select rows with empty cells:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt &amp;lt;&amp;lt; select where(!Contains(Loc Nonmissing(dt &amp;lt;&amp;lt; get as matrix), Row()));&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 02 Jul 2021 21:03:10 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Selecting-cells-with-empty-data/m-p/12986#M12284</guid>
      <dc:creator>ms</dc:creator>
      <dc:date>2021-07-02T21:03:10Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting cells with empty data</title>
      <link>https://community.jmp.com/t5/Discussions/Selecting-cells-with-empty-data/m-p/12987#M12285</link>
      <description>&lt;P&gt;If I'm reading your message correctly, I think you've actually got two questions.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;How to find the rows that are all missing for a given set of columns.&lt;/LI&gt;
&lt;LI&gt;How to make your code not dependent on the names of those columns and how many there are.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Not surprisingly there are lots of different ways to do 1. &lt;A href="https://community.jmp.com/people/PMroz" target="_blank"&gt;PMroz&lt;/A&gt; , &lt;A href="https://community.jmp.com/people/MS" target="_blank"&gt;MS&lt;/A&gt; and &lt;A href="https://community.jmp.com/people/Craige@JMP" target="_blank"&gt;Craige@JMP&lt;/A&gt; have given you some options there.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'll throw in one more. You could use the &lt;A href="http://www.jmp.com/support/help/Edit_Data.shtml" target="_blank"&gt;Missing Data Pattern&lt;/A&gt; utility to find them.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt = Open( "$SAMPLE_DATA\Cities.jmp" );

//delete some columns from this table to make it fit your example

dt &amp;lt;&amp;lt; delete columns( "PM10", "X", "Y" );

//change name of data table to ensure this modified version doesn't get saved 
//over the sample data

dt &amp;lt;&amp;lt; set name( "CitiesModified" );

//I want to use the columns starting at column 9, 
//so I build a list of references to them

mycols = {};

For( i = 9, i &amp;lt;= N Cols( dt ), i++,
	Insert Into( mycols, Column( dt, i ) )
);

mdp = Dt &amp;lt;&amp;lt; Missing Data Pattern( columns( Eval( mycols ) ), Output Table( "Missing Data Pattern" ) );

//The patterns columns shows the pattern of missing values
//the Missing Data Pattern data table is sorted, 
//so if there are rows with all missing data
//the last row of the Missing Data Pattern data table will be all 1s.
//The Repeat() function just builds a string of 1s for as many columns as I'm working with

If( Column( mdp, "Patterns" )[N Rows( mdp )] == Repeat( "1", N Items( mycols ) ), 

//The Missing Data Pattern data table is linked to the source table so selecting a row
	//in it, selects all the rows that it represents in the source table

	mdp &amp;lt;&amp;lt; Select Rows( N Rows( mdp ) );

//now I can delete the rows in the source table

	dt &amp;lt;&amp;lt; delete rows;
,
	Show( "No all missing rows" )
);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P style="font-size: 12px; font-family: Courier;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I've tried to show how to make this code work for any number of columns. In this case, because I needed a list of columns to pass to the Missing Data Pattern utility, I built a list based on the column numbers.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Even having written all of this and having shown how to use the Missing Data Pattern Utility, I think my favorite solution here would be &lt;A href="https://community.jmp.com/people/PMroz" target="_blank"&gt;PMroz&lt;/A&gt;'s to use &lt;A href="http://www.jmp.com/support/help/Stack_Columns.shtml" target="_blank"&gt;Stack Columns&lt;/A&gt;. You really want to end up with the data stacked anyway, so doing that first makes it easy to simply select the missing rows in the stacked column and delete them.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt = Open( "$SAMPLE_DATA\Cities.jmp" );

//delete some columns from this table to make it fit your example

dt &amp;lt;&amp;lt; delete columns( "PM10", "X", "Y" );

//change name of data table to ensure this modified version doesn't get saved 
//over the sample data

dt &amp;lt;&amp;lt; set name( "CitiesModified" );

//again I need a list of columns to use in the Stack()

mycols = {};

For( i = 9, i &amp;lt;= N Cols( dt ), i++,
	Insert Into( mycols, Column( dt, i ) )
);

//stack those columns creating a new data table

stacked_dt = dt &amp;lt;&amp;lt; Stack(
	columns( Eval( mycols ) ),
	Source Label Column( "Gas" ),
	Stacked Data Column( "PPM" )
);

missing_rows = stacked_dt &amp;lt;&amp;lt; get rows where( Is Missing( :PPM ) );

stacked_dt &amp;lt;&amp;lt; delete rows( missing_rows );
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 02 Jul 2021 21:01:08 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Selecting-cells-with-empty-data/m-p/12987#M12285</guid>
      <dc:creator>Jeff_Perkinson</dc:creator>
      <dc:date>2021-07-02T21:01:08Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting cells with empty data</title>
      <link>https://community.jmp.com/t5/Discussions/Selecting-cells-with-empty-data/m-p/12988#M12286</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;MS that's even slicker - now let's see you do it in 0 lines of code!&amp;nbsp; Ha ha just goes to show there are several ways to do the same thing in JSL.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Jun 2015 19:39:43 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Selecting-cells-with-empty-data/m-p/12988#M12286</guid>
      <dc:creator>pmroz</dc:creator>
      <dc:date>2015-06-25T19:39:43Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting cells with empty data</title>
      <link>https://community.jmp.com/t5/Discussions/Selecting-cells-with-empty-data/m-p/12989#M12287</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks everyone.....Everything worked except the Loc Nonmissing.....I only have JMP9 at the moment (too lazy to upgrade) and that feature doesn't work in JMP9......I'm still a JSL newbie.....Thanks again&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 26 Jun 2015 06:54:17 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Selecting-cells-with-empty-data/m-p/12989#M12287</guid>
      <dc:creator>steven_w_daniel</dc:creator>
      <dc:date>2015-06-26T06:54:17Z</dc:date>
    </item>
  </channel>
</rss>

