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...
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 argu...
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 sc...
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.
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 exam...
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 ...
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 ...
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...
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. N...
You use the New Table function to create a new data table. Because there are no required arguments, you can create an empty, untitled data table by just using the function with nothing in the parentheses. But, there are several optional arguments that you'll typically use. The first unnamed argument is a character string that sets the name of the data table. There are also named argumen...
This demonstration is going to illustrate how to manage data columns and data table rows. And I'll use a script to make a new data table with one column to start. So in the course journal in section I'm going to click Make New Data Table and Column. And you can see that we're using the new table function. We're going to store the data table object reference that this creates in the vari...
So you've seen that data tables and columns are really powerful JMP objects that store data and have a lot of other responsibilities. They have extensive message protocols that make most actions easy to accomplish. But they also use a lot of overhead: data manipulation can require a lot of time, and sending messages can require a lot of code. Matrices, on the other hand, also store data...
You can get numeric data from a data column by sending either the Get Values message or the Get As Matrix message to the column. The result of both of these is a column vector, or, a matrix that contains only a single column. You can also get the numeric data from all the numeric data columns in a data table by sending the Get As Matrix message to the data table. If there are columns wi...
A useful utility function for matrices is the Loc function. This function takes a Boolean matrix as its argument, and returns a matrix with the locations, or positions, of all of the true elements in the matrix. Now, remember that JMP interprets zero as false and non-zero values as true. So if the argument supplied is simply a matrix, or a variable storing a matrix, the Loc function ret...
So this demonstration is going to illustrate some of the ways that you can use matrices. So in the course journal in section I'm going to click on Cure Time Data. And let's suppose that we need to find the average cure time for each date. So we'll add up all of the cure time values in each row, and dividing by the number of samples. And I'm going to use matrices to perform this computat...
Now, in addition to storing your data and its metadata, the data table is responsible for data preparation using commands in the Tables, Rows, and Columns menus, or their equivalent messages in JSL. The data table is also responsible for launching the platforms for analysis and graphing. Sometimes, you only want to analyze or plot a specific subset of the data values that are stored in ...
So in this demonstration, we'll look at selecting specific rows and using the subset command, which interactively is found in the Tables menu, to pull out a subset of the data table. So in the course journal in section I'm going to click on Ski Lodge Temperature Data. And this is a wide data table, but fairly short. And so our scenario here is that we have a ski resort that has a weathe...
Sometimes, you might need to combine the values from two or more columns into one column. This is known as stacking columns. The raw might data might be structured in such a way that there's a separate column for each group or category of a variable -- for example, the calories in beef versus poultry hot dogs. In JMP, if you want to compare the average calories of these two groups, you ...
What if you want to add one or more data tables to an existing table? For example, maybe the raw data are stored in different tables for different groups, or for different periods of data collection, and you want to have a single table with all the rows together. You can send the Concatenate message to a data table to create a new table that has the data from one or more other data tabl...
This demonstration shows two more commands from the Tables menu-- the Stack and Concatenate commands. So in section of the journal, I'm going to click on Cure Time Data again. And the organization of this table is that each cure time sample has its own separate column. And if I wanted to, for example, compare the averages of the five different cure times, that kind of analysis would wan...
JMP provides your analyses and plots through objects called platforms. Examples of platforms include Distribution, Bivariate, Fit Least Squares, and Graph Builder. JMP platforms combine related functionality and procedures. And you launch platforms with either the default settings, or with user preferences. After a platform is launched, a user can interact with it to further refine thei...
To launch a platform, you send a message to a data table. In return, you receive a reference to the analysis layer object. You can save this reference for later use. Let's take a look at an example. The message name identifies the platform. So in this example, the message name indicates the Bivariate platform. The arguments to the message cast columns into analysis roles and can specify...
The report layer of a platform also responds to messages, but you have to access it through a separate object reference. You obtain a reference to the report layer by sending the Report message to the analysis layer, or by calling the Report function with the reference to the analysis layer as its argument. So there are two examples shown here. In the first one, you send a Report messag...
Just about every platform in JMP includes an optional analysis role called the BY role. You can use this when you want to obtain separate analyses or graphs for every level or group in a column. For example, suppose you're working with the Big Class data table, and you want a separate bivariate fit of weight by height for each of the different age groups. When you put age in the BY role...
Your script can enhance the analysis by adding a column switcher or a local data filter to the platform used by your script. So, you can include the Local Data Filter argument or the Column Switcher argument in the launch message to add these features when the platform is launched. For example, the code shown here uses both the Local Data Filter and the Column Switcher arguments as part...
In this demonstration, we'll see how to script the analyses performed by some of the commonly-used platforms in JMP. In the journal in section I'll click on Concrete Strength and Humidity Data, and this is the data set I'm going to use for all of the examples in this demonstration. So we've got the type of concrete mix, the resulting concrete strength, and the ambient humidity when the ...