Names Default To Here( 1 ); dt = Open("C:/temp/Original.jmp"); dt_split = dt << Split( Split By( :PARAM ), Split( :VALUE ), Group( :PATIENTID, :TIME ), Remaining Columns( Drop All ), Sort by Column Property, Output Table Name("Split Table") ); dt_split << New Column("TEST", character); Close(dt, NoSave); dt_split:TEST << Set Each Value( If( (:TIME == "BASELINE") * Maximum( :TOTAL > 9, //rule 1 Maximum( :ITEM1, :ITEM2, :ITEM3, :ITEM4 ) > 3, //rule 2 (:ITEM1 > 2) + (:ITEM2 > 2) + (:ITEM3 > 2) + (:ITEM4 > 2) >= 3 //rule 3 ), "YES", "NO" )); //if needed restack and reorganize dt = dt_split << Stack( columns( :TOTAL, :ITEM1, :ITEM2, :ITEM3, :ITEM4 ), Source Label Column( "PARAM" ), Stacked Data Column( "VALUE" ), Copy formula( 0 ), Output Table Name("Original 2") ); dt:PARAM << Set Property("Value Ordering", {"TOTAL", "ITEM1", "ITEM2", "ITEM3", "ITEM4"}); Close(dt_split, NoSave); dt << Sort( By( :PATIENTID, :PARAM, :TIME ), Order( Ascending, Ascending, Ascending ), Replace Table ); //reorder the columns namelist= {"PATIENTID", "VALUE", "TIME", "PARAM", "TEST"}; for(i=1, i<=nitems(namelist), i++, dt << Go To( column(nameList[i])); if( i==1, dt << Move Selected Columns( To first ), dt << Move Selected Columns( After( Column( nameList[i-1] ) ) ); ); //end if ); // end for i dt << Clear Column Selection();