Subscribe Bookmark RSS Feed

Select rows #x to #y in a table

markschahl

Community Trekker

Joined:

Jun 18, 2012

A colleague that is a new JMP user came to me with the following question:

"How to select a given range of rows in a data table?"

Example: I want to select rows 10000-35000.

We searched through the help, manuals, and I searched jmp.com and this forum. Could not find the answer. With a large data table, you can't easily select the first row and then scroll to the last desired row.

Thanks!

,

Afterthought to the developers: if this can't be done, how about adding row number to the Data Filter dialog or Select By Row Number to Row Selection?

1 ACCEPTED SOLUTION

Accepted Solutions
Solution

You can add another column, and add a formula with the function "row()" - then you can use the Data Filter in the Rows menu item to select the rows you want. See screenshot below

3731_jmp-pic.jpg

4 REPLIES
Solution

You can add another column, and add a formula with the function "row()" - then you can use the Data Filter in the Rows menu item to select the rows you want. See screenshot below

3731_jmp-pic.jpg

pmroz

Super User

Joined:

Jun 23, 2011

You can also use a JSL script to do this:

dt = open("$sample_data\Big Class.jmp");

select_matrix =index(20,35);

dt << select rows(select_matrix);


Change dt to point to your table, and change the rows mentioned in the call to index to the rows you desire.  E.g. for your situation you would say:

dt = open("your table here");

select_matrix =index(10000,35000);

dt << select rows(select_matrix);


mtl

Community Member

Joined:

Apr 12, 2013

One possible method, at least in the BASE SAS world, would be like below.  Don't know if it directly applies to your case in JMP:

242  data a;

243      do i=1 to 10;

244          row=i;

245          output;

246      end;

247  run;

NOTE: The data set WORK.A has 10 observations and 2 variables.

NOTE: DATA statement used (Total process time):

      real time           0.00 seconds

      cpu time            0.00 seconds

248

249  proc sql noprint;

250      create table b as

251      select *, monotonic() as rownum

252      from a

253      where monotonic()<=7 and monotonic()>=4;

NOTE: Table WORK.B created, with 4 rows and 3 columns.

254  quit;

NOTE: PROCEDURE SQL used (Total process time):

      real time           0.00 seconds

      cpu time            0.00 seconds

255

256  data _null_;

257      set b;

258      put row=;

259  run;

row=4

row=5

row=6

row=7

NOTE: There were 4 observations read from the data set WORK.B.

NOTE: DATA statement used (Total process time):

      real time           0.00 seconds

      cpu time            0.00 seconds

paramaribo

Community Member

Joined:

Jun 2, 2013

At least in Base SAS you can do this below.  Just not sure in JPM.

Here is an example code:

Data subset_of_cars;

     row_no +1; /* Just for demo/checking purpose*/

     set sashelp.cars;

     if _n_ >= 100 and _n_ <= 200;

run;