cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
JMP is taking Discovery online, April 16 and 18. Register today and join us for interactive sessions featuring popular presentation topics, networking, and discussions with the experts.
Choose Language Hide Translation Bar
Add favorite formula columns to a table
Problem

You want to add the same set of new, formula-based columns to your data over and over again.

Solution

Store the formulas and column names in a table.  Extract them from that table. loop over them trying to make a new column for each pair in your target data table.


favorite_formulas=function({dt1=currentdatatable(),FFpath},{default local},
/*   
adds formulas to a data table from another data table 
used to store column names and respective formulas example: favorite_formulas(currentdatatable(),"my_formulas.jmp"); FFpath must point to a file with columns "formula" and "colname"
with text of desired formulas and column names in the order they should evaluate (row 3 can use the column created by row 2, etc) */ try( //open setup file and get list of formulas and column names dtFF=open(FFpath); current data table(dtFF); dt1 << suppressFormulaEval(true); try(c=:colname,
wait(0);statusmsg("setup file must contain column colname");
throw ("setup file must contain column colname")); try(c=:formula,
wait(0);statusmsg("setup file must contain column formula");
throw("setup file must contain column formula")); CN=column("colname")<<getvalues; F=column("formula")<<getvalues; close(dtFF,nosave); //try to make new cols in dt1 with each of the formulas... current data table(dt1); for(i=1,i<=nitems(CN),i++, try( exp="dt1<<newcolumn(CN[i],formula("||F[i]||"))"; eval(parse(exp)); ); ); dt1 << suppressFormulaEval(false); print("DONE ADDING FAVORITE FORMULA COLUMNS"); , print("failure, probably to find favorite formulas file with path "||FFpath); ); dt1 );
Discussion

I often pull data with the same columns and format and I want to add the same set of new formula columns each time.  This is just a tidbit that  makes that easy and makes it easy to share around sets of "favorite formulas" with other users as simple, readable datatables.  I use this function version inside a lot of other scripts but I also have an addin version.


See Also

 

Comments
nascif_jmp

This functionality is directly supported by the Formula Depot, available in JMP Pro. Save your formulas from the table to the Depot using "Add Formula from Column", and later transfer them to a new table using "Run Scripts".

 

FD_runScripts.png

 

JSL Cookbook

If you’re looking for a code snippet or design pattern that performs a common task for your JSL project, the JSL Cookbook is for you.

This knowledge base contains building blocks of JSL code that you can use to reduce the amount of coding you have to do yourself.

It's also a great place to learn from the experts how to use JSL in new ways, with best practices.