- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
How to add new column to all data tables
I have a series of experiments which produce a text file of results, titled with the name of the sample.
I have a script that takes the data table title and populates a new "sample name" column with the title.
dt = current data table();
name = dt << get name;
new column("Sample Name");
column(dt,"Sample Name")[1]=name;
nr = N Rows( dt );
For( ii = 2, ii <= nr, ii++,
If( is missing(Column( dt, "Sample Name" )[ii]),
Column(dt, "Sample Name" )[ii] = Column( dt, "Sample Name" )[ii - 1]
);
);
The experiments are carried out dozens, even hundreds at a time. Is there an adaptation to my script I can put in to make this run on all open data tables so that I can concatenate all the results and continue to automate the analysis?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: How to add new column to all data tables
Do you want to add new column to each of the tables named "Sample Name" and it will contain only the name of that specific data table?
Names Default To Here(1);
Open("$SAMPLE_DATA/Big Class.jmp"); // open for demo purposes
Open("$SAMPLE_DATA/Big Class Families.jmp"); // open extra table for demo purposes
new_col_name = "Sample Name";
For Each({dt_cur}, Get Data Table List(),
name = dt_cur << get name;
If(!Contains(dt_cur << Get Column Names("String"), new_col_name),
dt_cur << New Column(new_col_name, Character, Nominal, << Set Each Value(name));
);
);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: How to add new column to all data tables
Thanks for your response.
I get an error when running this script
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: How to add new column to all data tables
You are most likely using older version of JMP (For Each was introduced in JMP16). Simple fix is to replace it with For loop (also fixed one typo on the code):
Names Default To Here(1);
Open("$SAMPLE_DATA/Big Class.jmp"); // open for demo purposes
Open("$SAMPLE_DATA/Big Class Families.jmp"); // open extra table for demo purposes
new_col_name = "Sample Name";
dt_list = Get Data Table List();
For(i = 1, i <= N Items(dt_list), i++,
dt_cur = dt_list[i];
name = dt_cur << get name;
If(!Contains(dt_cur << Get Column Names("String"), new_col_name),
dt_cur << New Column(new_col_name, Character, Nominal, << Set Each Value(name));
);
);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: How to add new column to all data tables
If you need each table name only for concatenation, why not let concatenate doing the job, it has an option for this purpose? See Scripting index or help.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Trial1.jmp" );
dt2 = Open( "$SAMPLE_DATA/Trial2.jmp" );
dt << Concatenate(
Output Table( "Result Table with Source" ),
Data Table( "Trial2" ),
Create Source Column
);