The problem is not with the Tabulate code. The Tabulate code I provided you will work just fine. The issue is with the setting of the columns to be in the tabulate. In the last code that I sent you, the statement
CharacterCols = dt << get column names( character );
put into the CharacterCols list, all of the columns from the data table that were of Data Type Character. And the Tabulate ran correctly with the columns Lot_id, Wafer ID in Lot ID. Those are the only 2 columns in the data table that are of Character Data Type. It was my misunderstanding that your request for Classification variables being included in the second Tabulate, meant, Character columns. But with your correction that Classification needs to include Wafer and Site in the Tabulate, requires that the CharacterCols list of columns needs to be generated differently. What will cover all of the columns that you want, is to load that list with all of the columns with the modeling type of "Nominal". Therefore, a simple change of the statement to
CharacterCols = dt << get column names( nominal );
Will place into the CharacterCols list, {lot_id, wafer, Wafer ID in lot ID, SITE};
The modified JSL is below
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
CharacterCols = dt << get column names( nominal );
dt << Tabulate(
Set Format( Name( "% of Total" )(9, 0) ),
Show Control Panel( 0 ),
Add Table(
Column Table( Statistics( N, Name( "% of Total" ) ) ),
Row Table( Grouping Columns( eval( CharacterCols ) ) )
)
);
Jim