cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
See how to use to use Text Explorer to glean valuable information from text data at April 25 webinar.
Choose Language Hide Translation Bar
View Original Published Thread

JSL: Copy data table

JPKO
Level III

This is probably really simple, but I've been through the scripting guide and I've searched the community discussions without any luck so here goes:

 

I'm trying to copy a comple data table with values, column properties and all. Is there a command for this? I tried to hack something together:

dt=current data table();

colNames = dt << Get Column Names( String );

ndt = New Table("Plotting Data", /*invisible,*/);

For (i=1, i <= NCols(dt), i++,
	New Column(colNames[i]);
	colProps = Column(dt, colNames[i]) << Get Column Properties;
	Column( ndt, colNames[i]) << Add Column Properties( colProps );
);

ndt << Add Rows(NRows(dt));
For (j=1, j <= NCols(dt), j++,
	colVals = Column(dt, colNames[j]) << Get values;
	Column(ndt, colNames[j]) << Set values( colVals );
);

However besides being overly complicated for something rather simple, it won't copy character data because data type is apparently not included in column properties.

 

 

Thanks,

Johan

1 ACCEPTED SOLUTION

Accepted Solutions
ian_jmp
Level X


Re: JSL: Copy data table

Here's one way:

NamesDefaultToHere(1);
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
dt2 = Eval(dt1 << getScript);

View solution in original post

4 REPLIES 4
JPKO
Level III


Re: JSL: Copy data table

BTW sorry for the invisible command that's blocked out. It's not important for my question.
ian_jmp
Level X


Re: JSL: Copy data table

Here's one way:

NamesDefaultToHere(1);
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
dt2 = Eval(dt1 << getScript);


Re: JSL: Copy data table

Another way is to subset the table with all rows and all columns.

dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt_copy = dt << Subset( All rows, Selected columns only( 0 ) );
Justin
ThomasDickel
Level III


Re: JSL: Copy data table

Hi, 

we just ran into an error using the proposed solution "Eval( dt << Get script)" while using two nested "For each row" commands.

Replacing this with the "dt<< Subset" made the function work. So there must be a difference between these two commands.

 

Best Regards,

Thomas