Introduction to the JMP Scripting Language
Before launching the course, please download and extract the zip file above (intro-to-jsl-journal.zip) for use with the course activities. This course covers a range of scripting...
Before launching the course, please download and extract the zip file above (intro-to-jsl-journal.zip) for use with the course activities. This course covers a range of scripting...
Many of the operations you perform on data tables require selecting rows. Selecting rows is often necessary for the desired behavior with analysis and graphing platforms. So if you want to change the row states of some rows to hidden or excluded, for example, you need to select those rows first. Then you would send a message to the data table, and only the selected rows would respond. Now, there a...
When you send the Get Script message to any JMP object, what's returned to the log is a script that will create an identical object. So this is a great way to learn the proper syntax. For example, you could add a property to a column interactively, and then send the Get Script message to get the code that creates that property. You can then use that code, or a modified version of it, in your scrip...
In addition to the various attributes, data columns have properties associated with them. A column's properties affect how JMP uses it. Examples of column properties include formulas, notes, range and list checks, value labels, value order, axis specifications, and units. And there are many more properties with specialized applications. We'll illustrate the examples here as messages to an existing...
Data columns can have a variety of attributes associated with them. Your script might need to specify these attributes if it's creating new data columns, or it might need to change the attributes of an existing data column. Column attributes include things like the type of data, the modeling type, the format for numeric data, the current values in the column either as literal values or as a formul...
To send a message to a data column, you have to be able to refer to the column. There are several ways to refer to columns, some of which also return column object references. You can simply refer to a column by name, using the colon prefix to make sure JMP scopes the name as a data column. You can also combine the column reference with a data table reference using a colon too. For example, this l...
A script often needs to deal with individual data columns and rows. Your variables for analysis are represented by the data columns. The observations for these variables are represented by the rows in the data table. And scripts can act on data columns and rows through object messages, functions, and subscripts.
Once your script has imported a data table, or made changes to an existing JMP data table, you probably want to save the table. To do that, you send a Save or Save As message with a path and file name argument to the data table through an object reference. After your script has finished working with the data table, you can close it -- and in fact, it's a good idea to close it if your script no lon...
Let's look at an example. Suppose you have a text file that specifies the column names on the first line and then follows with a row of data on each of the subsequent lines. The values are separated by a character- in this case, a comma. JMP is likely to recognize this common format without help from you but you can force the correct format with optional arguments. The End of Field argument specif...
When your data are saved in a computer file that's not a JMP data table, you can import it into JMP in order to create a JMP data table. The original source file might be a text file, a Microsoft Excel workbook, or a file saved from a relational database. Whether your data are stored in a JMP data table or some other file format, you use the Open function to access your data. When you use the Open...
So here we're going to see how to use scripts to open JMP data tables. So I'll get a new Script Editor window and I'm going to use the pick directory function to prompt the user when the script runs to navigate to a directory or folder. And I'm going to store that result in the variable myPath. And here notice with the variable name, I'm using an example of what we call camel case where instead of...
Often, you want the script user to be able to choose a directory or file when the script runs. This is how your script can obtain the absolute file path, no matter who's using the script. You can use the Pick Directory function with an optional prompt argument, and JMP will open the Browse for Folder dialog and allow the user to navigate to and select a directory. The optional prompt appears in th...
In order for your script to open your data table, it has to tell JMP where to find the table. So, you need to understand how file paths work. The path to a file starts from the root (or disk drive) and continues with the sequence of folders that leads to the folder where the file is saved. So, the sequence reflects the series of folders that JMP has to navigate, starting at the root, in order to g...
Working with data tables is, of course, an important part of working with JMP. The data table enables JMP to access your data through various analysis and graphing platforms. You can enter your data directly into a JMP data table, and you can save that data table for future access. Or, you might have data saved in a different file format, or in a relational database. In those cases, you have to ei...
In this demonstration, we'll see how to use the match and choose conditional functions. So in the course journal, in section I'm going to click on Concrete Strength Data. And so the Concrete Strength data includes this column called Concrete Type, which indicates the brand of concrete mix and whether it was reinforced or not, if it was just standard during whatever this test was. And let's suppose...
It's common to have conditions that are limited to specific values, and these values could be numeric or character data. You can use the Match function in this situation. The Match function is a specialized conditional function that takes three or more arguments. The first argument is evaluated and used as the value to be matched. The second argument is evaluated and interpreted as a Boolean value...
In this demonstration, we'll take a look at Boolean functions, as well as the If function I'm going to get a script editor window. And again, the keyboard shortcut is Ctrl+T or you can go to the File menu, use the toolbar. Many different ways to get that new Script Editor window. And let me bring the log in front of the journal. Back in the Script Editor window, I'm going to type the code where I ...
So let's look at an example of using the If function. Suppose you have data from a public school in the US with grade levels for each student. Some grade levels are grouped into schools, and you want to use the numeric data to group the students by school. This is an example of binning data, where the bins represent ranges of values, and the If statement is an easy way to assign the different grad...
The most general way to test conditions is to use the If function. Let's take a look at it in the context of iterating down the rows of a data table to populate a column called "grade" using the For Each Row function. In fact, we'll look at each of the conditional functions in the context of the For Each Row function. Now, the number of arguments for the If function varies, but at least two argume...
Remember, scripts are procedural. JMP begins by evaluating the first line and continues through until it ends with the last line. This kind of evaluation makes sense for the parts of your script that always have to be evaluated. This evaluation is unconditional. But some parts of your script should only be evaluated under specific cases. This evaluation is conditional. And your script has to deter...
In this demonstration, we'll see how to iterate across rows using the for each row function. So I'm going to get the Big Class data from the script in section And I'm going to write a script that's going to create a new column with the BMI, or Body Mass Index, values. And I'll use the for each row function to populate that. And the body mass index is calculated by multiplying the weight in pounds ...
Another special case of iteration is the algebraic product. The Product function is similar to the Summation function, and also requires three arguments. The first argument is evaluated before the multiplication begins, and is generally used to initialize a counter or index variable. The second argument specifies a limit for the counter or index. And the third argument is the quantity to be multip...
One special case of iteration is the algebraic sum. The Summation function requires three arguments. The first argument is evaluated before the summation begins. It's generally used to initialize a counter or index variable. The second argument specifies a limit for the counter or index. And the third argument is the quantity to be added to the sum. For example, calling the Summation function with...
So, you learned about the For function, which you can use for practically any kind of iteration. There's also a special function for iterating down the rows of the data table, and that's the For Each Row function. This function only requires one argument, which is the body or code that you want JMP to evaluate row-wise. For Each Row iterates down the rows of the data table until it comes to the en...
So this demonstration illustrates how to use the For function for iteration. And so far, we've used the Script Editor with the log to test our scripts and observe the results. But now we want to look at that using the debugger. So I have a script editor window open, and I'm going to start by typing Names Default to Here. And I'll put that Boolean I'm not adding spaces right now. I'm going to actua...
So, the Script Editor is a really powerful tool for both reading and writing your scripts. You can also evaluate just one line of code or a selection of code to verify the behavior as you develop your script. And you can hover over a variable name to determine its current contents. You can also use the JMP Log to examine the results of evaluation or any error messages. The Debugger is a separate e...