cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • New to JMP? Join us Sept. 23-24 for the Early User Edition of Discovery Summit, tailor-made for new users. Register now for free!

Discussions

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

JMP script to Stack from column 2-infinity from a weekly updating Excel table

I have an Excel table that I am manually updating on a weekly basis. Next, I open this table in JMP and Stack every column from column 2 onward. With every weekly update, I add more columns to the initial table. I recently took an Intro to JMP Scripting class and I'm looking to automate this process a bit instead of re-Stacking it from scratch every time.

 

Here is what the table looks like in JMP before performing the Stack:

JMPexample.jpg

 

 

I know how to import the Excel table into JMP via a script like so:

Open(
	"Drive:\Folder\File.xlsx",
	Worksheets( "Data" ),  // etc.

 

But where I had a question is how do I change the JMP script to ask it to Stack columns 2 through end?

 

I have the following from doing a manual Stack in JMP and looking at the source script:

 

Data Table( "Data" ) << Stack(
	columns(
		:Name( "8/23/2021" ),
		:Name( "08/30/2021" ),
		:Name( "09/06/2021" ),
		:Name( "09/13/2021" ),
		:Name( "09/20/2021" )  // etc.
	),
	Source Label Column( "Failure Group Name" ),
	Stacked Data Column( "% Share, Week of" )
);

and I have the framework of a For( function I can use:

 

For( c = 2, i <= N Col(), c++,
     //body//

but I just don't quite know how to put them together. Is it putting the Stack( command inside the For( command somehow?

 

Thanks to anyone who can help!

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
txnelson
Super User

Re: JMP script to Stack from column 2-infinity from a weekly updating Excel table

Here is one way to handle this.   BTW, your example data table could not be opened, so I have added one of my own.

names default to here(1);
dt=data table("Example");

colNames = dt << get column names();

remove from(colNames, 1, 2 );

dt << Stack(
	columns( colNames
	),
	Source Label Column( "Failure Group Name" ),
	Stacked Data Column( "% Share, Week of" )
);
Jim

View solution in original post

4 REPLIES 4
jthi
Super User

Re: JMP script to Stack from column 2-infinity from a weekly updating Excel table

I think that with Stack platform you can just use list of columns in the columns() argument

Names Default To Here(1);

dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");

cols_to_stack = {"NPN1", "PNP1", "PNP2"};

dt_stacked = dt << Stack(
	columns(cols_to_stack),
	Source Label Column("Label"),
	Stacked Data Column("Data"),
	Drop All Other Columns(1)
);

So get a list of column names you have from the datatable you create from excel file by using << Get Column Names(String), then drop first column with Remove From()

Names Default To Here(1);

dt = Open(
	"$SAMPLE_IMPORT_DATA/Team Results.xlsx",
	Worksheets("Ungrouped Team Results"),
	Worksheet Settings(Headers Start on Row(3), Data Starts on Row(4))
);
//all columns
col_names = dt << Get Column Names("String");

//drop first column
Remove From(col_names, 1);

//stack with remaining, won't work exactly like this with this example data, as data types aren't same
//dt_stacked = dt << Stack(...)

See Help / Scripting Index and search for different functions used here.

-Jarmo
jbolinger
Level II

Re: JMP script to Stack from column 2-infinity from a weekly updating Excel table

Thank you for the response, jthi! I'm gonna fiddle around with this and see if I can get it to work.

txnelson
Super User

Re: JMP script to Stack from column 2-infinity from a weekly updating Excel table

Here is one way to handle this.   BTW, your example data table could not be opened, so I have added one of my own.

names default to here(1);
dt=data table("Example");

colNames = dt << get column names();

remove from(colNames, 1, 2 );

dt << Stack(
	columns( colNames
	),
	Source Label Column( "Failure Group Name" ),
	Stacked Data Column( "% Share, Week of" )
);
Jim
jbolinger
Level II

Re: JMP script to Stack from column 2-infinity from a weekly updating Excel table

Thanks for the response, txnelson! This solution worked. :D

Recommended Articles