cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Browse apps to extend the software in the new JMP Marketplace
Choose Language Hide Translation Bar
Batista
Level II

copy column from one table to another (bring the formula and the heading

Hi. I have two tables. one with the heading and formula I need.

And at other tables is the one with the formulas. How can copy the column from one table (bring the formula and the heading) to another. Thanks

3 REPLIES 3
txnelson
Super User

Re: copy column from one table to another (bring the formula and the heading

Here is an example of one way to do this

Names Default To Here( 1 );

dt = New Table( "Source",
	add rows( 20 ),
	New Column( "A", formula( Random Integer( 1, 10 ) ) ),
	New Column( "B", formula( Random Integer( 20, 30 ) ) )
);
dt << run formulas;
dt2 = New Table( "Copy", add rows( 10 ) );

// Create the columns and set the names and formula	
For( i = 1, i <= N Cols( dt ), i++,
	dt2 << New Column( Column( dt, i ) << get name );
	theFormula = Char( Column( dt, i ) << get formula );
	Eval(
		Parse(
			"Column( dt2, Column( dt," || Char( i ) || ")<< get name ) <<
					set formula( " || theFormula || ");"
		)
	);
);
Jim
Batista
Level II

Re: copy column from one table to another (bring the formula and the heading

Hi thanks! Sorry but I cant understand the script. Would you explain for me in another way?
txnelson
Super User

Re: copy column from one table to another (bring the formula and the heading

If your original post was not talking using a script to do the copying, then what you need to do, is to use

     Tables==>Subset

Below is a more fully annotated version of the script.

// This script creates a couple of example data tables and then runs
// a little script that copies all of the columns from the originating 
// data table to a new data table

// Setup the memory environment
Names Default To Here( 1 );

// Create an example data table that has some formula columns
// The variable "dt" is used as a pointer to this data table
dt = New Table( "Source",
	add rows( 20 ),
	New Column( "A", formula( Random Integer( 1, 10 ) ) ),
	New Column( "B", formula( Random Integer( 20, 30 ) ) )
);
dt << run formulas;

// Create a new data table that will be used to create the new
// columns in
// Variable "dt2" is used to point to this data table
dt2 = New Table( "Copy", add rows( 10 ) );

// Create the columns and set the names and formula	

// Loop across all columns in the Originating data table
// and retireve the name and formula and then create a new
// column in the new data table
For( i = 1, i <= N Cols( dt ), i++,

	// Create the new column in the new data table, giving it
	// the name from the current data table
	dt2 << New Column( Column( dt, i ) << get name );
	// Get the formula from the originating data table
	theFormula = Char( Column( dt, i ) << get formula );
	
	// Set the formula into the new data table
	Eval(
		Parse(
			"Column( dt2, Column( dt," || Char( i ) || ")<< get name ) <<
					set formula( " || theFormula || ");"
		)
	);
);
Jim